1.创建一个BufferedImage对象
BufferedImage image = new BufferedImage(120,35,BufferedImage.TYPE_INT_RGB);
2.由BufferedImage对象得出Graphics对象
通过这个Graphics对象即可操作生成图片
3.对这个Graphics对象进行设置处理
①设置背景颜色
设置颜色 setColor();
填充整个矩形 fillRect();
②设置边框
设置边框颜色 setColor();
画出边框 drawRect();
③画干扰线
用for循环操作来画出多条干扰线
也是先设置颜色 setColor();
接着用 随机函数写出 起点的横纵坐标和终点横纵坐标
调用drawLine方法进行画线
④写随机文字或数字
同样也是先设置颜色
再设置要验证的字
再调用drawString方法
如果是用数字的话,则用随机数函数即可,
如果是想用文字的话,则要用到转义字符如 char ch = 'u8827' 'u5f46'这样利用随机的数字拼凑而成的Unicode码,由于某些字不一定所有人都认识,所以建议自己收集一些常用字的Unicode码。
想让文字倾斜则需要将Graphic对象强转为drawString2D类型,再调用它的rotate方法
我的代码如下
for(int i = 1;i<=4;i++) {
g.rotate(new Random().nextInt(30)*Math.PI/180,x,0); //参数1:旋转的弧度,注意不是角度。参数2参数3:旋转基点 的xy坐标点。
g.drawString(Integer.toString(new Random().nextInt(10)), x, 20);
g.rotate(-1*new Random().nextInt(30)*Math.PI/180,x,0); 将角度旋转回来,不影响第二次旋转。
x+=15;
}
PS : 设置不缓存图片
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);