扭曲图片(验证码)的较正处理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
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