扭曲图片(验证码)的较正处理C#代码
在很多的验证码图片中,作者会刻意将图片中的文字“扭曲”一下,如下变成斜体。这样就会增加程序识别的难度。作为挂机程序的编写者,自然要反其道而行之,比较有效的一种方法是将“扭曲”的过程反过来校正一下,如图。这样处理,就比较容易分割了。
实现的代码如下:
实现的代码如下:
1
private void button2_Click(object sender, EventArgs e)
2
{
3
Bitmap curBitmap = new Bitmap(pictureBox1.Image.Width,pictureBox1.Image.Height);
4
Graphics g = Graphics.FromImage(curBitmap);
5
Matrix X = new Matrix();
6
// X.Rotate(30);
7
X.Shear((float)0.16666666667, 0); // 2/12
8
g.Transform = X;
9
// Draw image
10
//Rectangle cloneRect = GetPicValidByValue(128); //Get Valid Pic Rectangle
11
Rectangle cloneRect = new Rectangle(6, 5, 40, 12);
12
Bitmap tmpBmp = ((Bitmap)pictureBox1.Image).Clone(cloneRect, pictureBox1.Image.PixelFormat);
13
g.DrawImage(tmpBmp,
14
new Rectangle(6, 5, 40, 12),
15
0, 0, tmpBmp.Width,
16
tmpBmp.Height,
17
GraphicsUnit.Pixel);
18
19
pictureBox2.Image=curBitmap ;
20
}
21![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/InBlock.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/InBlock.gif)
7
![](/Images/OutliningIndicators/InBlock.gif)
8
![](/Images/OutliningIndicators/InBlock.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
21
![](/Images/OutliningIndicators/None.gif)