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