java生成简单的图形验证码大致分为五步:
第一步:获取画板并设置画板大小
int width=200;
int height=40;
BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);//设置宽高以及画板类型
第二步:获取笔触,并填充画板
Graphics gs = image.getGraphics();//获取画笔
gs.setColor(Color.white);//设置画笔颜色
gs.fillRect(0,0,width,height);//填充矩形
gs.setFont(new Font("宋体",Font.BOLD+Font.ITALIC,30));//设置字体
第三步:利用Random生成验证码,并写在画板上
String words="1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
Random random = new Random();
int length=4;//验证码长度
StringBuffer buffer = new StringBuffer();//用来接收产生的随机在字符
int words_length=words.length();
for(int i=0;i<length;i++){
gs.setColor(new Color(random.nextInt(256),random.nextInt(256),random.nextInt(256)));
char c = words.charAt(random.nextInt(words_length));//获取随机字符
gs.drawString(String.valueOf(c),60+(i*20),30);//字符在画板书写的位置
buffer.append(c);
}
第四步:在画板上画干扰元素
gs.setColor(Color.GRAY);//设置画笔颜色
for(int i=0;i<400;i++){
gs.drawOval(random.nextInt(200),random.nextInt(40),1,1);//在画板随机位置生成干扰元素
}
第五步:存到本地或者响应到客户端,响应到客户端需要有HttpServletResponse响应流对象,可通过形参进行传递
//保存到本地
File outputFile = new File("src/main/java/img/image.png");
ImageIO.write(image, "png", outputFile);
//相应到客户端
ServletOutputStream outputStream = response.getOutputStream();
ImageIO.write(image,"png",outputStream);
最后的执行效果是:
关于画笔的文档可以前往Graphics中文文档