C# 去掉图片的白边

 1         /// <summary>
 2         /// 裁剪图片(去掉白边)
 3         /// </summary>
 4         /// <param name="bmp">图片</param>
 5         public static Bitmap CutImageWhitePart(Bitmap bmp)
 6         {
 7             //上左右下
 8             int top = 0, left = 0, right = bmp.Width, bottom = bmp.Height;
 9 
10             //寻找最上面的标线,从左(0)到右,从上(0)到下
11             for (int i = 0; i < bmp.Height; i++)//
12             {
13                 bool find = false;
14                 for (int j = 0; j < bmp.Width; j++)//
15                 {
16                     Color c = bmp.GetPixel(j, i);
17                     if (!IsWhite(c))
18                     {
19                         top = i;
20                         find = true;
21                         break;
22                     }
23                 }
24                 if (find)
25                     break;
26             }
27             //寻找最左边的标线,从上(top位)到下,从左到右
28             for (int i = 0; i < bmp.Width; i++)//
29             {
30                 bool find = false;
31                 for (int j = top; j < bmp.Height; j++)//
32                 {
33                     Color c = bmp.GetPixel(i, j);
34                     if (!IsWhite(c))
35                     {
36                         left = i;
37                         find = true;
38                         break;
39                     }
40                 }
41                 if (find)
42                     break;
43             }
44             //寻找最下边标线,从下到上,从左到右
45             for (int i = bmp.Height - 1; i >= 0; i--)//
46             {
47                 bool find = false;
48                 for (int j = left; j < bmp.Width; j++)//
49                 {
50                     Color c = bmp.GetPixel(j, i);
51                     if (!IsWhite(c))
52                     {
53                         bottom = i;
54                         find = true;
55                         break;
56                     }
57                 }
58                 if (find)
59                     break;
60             }
61             //寻找最右边的标线,从上到下,从右往左
62             for (int i = bmp.Width - 1; i >= 0; i--)//
63             {
64                 bool find = false;
65                 for (int j = 0; j <= bottom; j++)//
66                 {
67                     Color c = bmp.GetPixel(i, j);
68                     if (!IsWhite(c))
69                     {
70                         right = i;
71                         find = true;
72                         break;
73                     }
74                 }
75                 if (find)
76                     break;
77             }
78 
79             //克隆位图对象的一部分。
80             Rectangle cloneRect = new Rectangle(left, top, right - left, bottom - top);
81             Bitmap cloneBitmap = bmp.Clone(cloneRect, bmp.PixelFormat);
82             bmp.Dispose();
83             //cloneBitmap.Save(@"d:123.png", ImageFormat.Png);
84             return cloneBitmap;
85         }
86 
87         /// <summary>
88         /// 判断是否白色和纯透明色(10点的容差)
89         /// </summary>
90         public static bool IsWhite(Color c)
91         {
92             //纯透明也是白色,RGB都为255为纯白
93             if (c.A < 10 || (c.R > 245 && c.G > 245 && c.B > 245))
94                 return true;
95 
96             return false;
97         }
原文地址:https://www.cnblogs.com/s666/p/13594534.html