background image

最近一直在开发一个用于自动发帖的工具,用 HttpClient 模拟客户端浏览器注册发帖。但
是碰到了图形验证码的问题了,对单数字的验证码,通过一些 OCR 引擎,如:
tesseract,AspriseOCR 很容易解决问题。但碰到如 CSDN 论坛这中图形验证码就比较麻烦,
必须先通过预处理。使图象二值化,黑白灰度,增加亮度。我的代码如下:

[java] 

view plain

§

copy

§

1.

package

 myfilter;  

2.

import

 java.io.*;  

3.

import

 java.awt.image.*;  

4.

import

 java.awt.geom.AffineTransform;  

5.

import

 java.awt.color.ColorSpace;  

6.

import

 java.awt.image.ConvolveOp;  

7.

import

 java.awt.image.Kernel;  

8.

import

 java.awt.image.BufferedImage;  

9.

import

 javax.imageio.ImageIO;  

10.

import

 java.awt.Toolkit;  

11.

import

 java.awt.Image;  

12.

  

13.

/**

 

14.

 * <p>Title: Image Filter</p>

 

15.

 *

 

16.

 * <p>Description: image processing by filters </p>

 

17.

 * <p>Copyright: Copyright (c) 2010</p>

 

18.

 *

 

19.

 * @author gl74gs48@163.com

 

20.

 * @since jdk1.5.0

 

21.

 * @version 1.0

 

22.

 */

  

23.

public

 

class

 MyImgFilter {  

24.

    BufferedImage image;  

25.

    

private

 

int

 iw, ih;  

26.

    

private

 

int

[] pixels;  

27.

  

28.

  

29.

    

public

 MyImgFilter(BufferedImage image) {  

30.

        

this

.image = image;  

31.

        iw = image.getWidth();  

32.

        ih = image.getHeight();  

33.

        pixels = 

new

 

int

[iw * ih];  

34.

  

35.

    }  

36.

  

37.

    

/** 图像二值化

 */

  

38.

    

public

 BufferedImage changeGrey() {