验证码生成器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

packagecom.lizhou.tools;

importjava.awt.Color;

importjava.awt.Font;

importjava.awt.Graphics;

import java.awt.Graphics2D;

importjava.awt.image.BufferedImage;

importjava.util.Random;

/**

* 验证码生成器

*

* @author bojiangzhou

*/

public class VCodeGenerator {

/**

* 验证码来源

*/

final private char[] code = {

'2', '3', '4', '5', '6', '7', '8', '9',

'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',

'k', 'm', 'n', 'p', 'q', 'r', 's', 't', 'u', 'v',

'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F',

'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R',

'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'

};

/**

* 字体

*/

final private String[] fontNames = new String[]{

"黑体", "宋体", "Courier", "Arial",

"Verdana", "Times", "Tahoma", "Georgia"};

/**

* 字体样式

*/

final private int[] fontStyles = new int[]{

Font.BOLD, Font.ITALIC|Font.BOLD };

/**

* 验证码长度

* 默认4个字符

*/

privateintvcodeLen = 4;

/**

* 验证码图片字体大小

* 默认17

*/

privateintfontsize = 21;

/**

* 验证码图片宽度

*/

privateint width = (fontsize+1)*vcodeLen+10;

/**

* 验证码图片高度

*/

privateint height = fontsize+12;

/**

* 干扰线条数

* 默认3条

*/

privateintdisturbline = 3;

publicVCodeGenerator(){}

/**

* 指定验证码长度

* @paramvcodeLen验证码长度

*/

publicVCodeGenerator(intvcodeLen) {

this.vcodeLen = vcodeLen;

this.width = (fontsize+1)*vcodeLen+10;

}

/**

* 生成验证码图片

* @paramvcode要画的验证码

* @paramdrawline是否画干扰线

* @return

*/

publicBufferedImagegeneratorVCodeImage(String vcode, booleandrawline){

//创建验证码图片

BufferedImagevcodeImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

Graphics g = vcodeImage.getGraphics();

//填充背景色

g.setColor(new Color(246, 240, 250));

g.fillRect(0, 0, width, height);

if(drawline){

drawDisturbLine(g);

}

//用于生成伪随机数

Random ran = new Random();

//在图片上画验证码

for(int i = 0;i

//设置字体

g.setFont(new Font(fontNames[ran.nextInt(fontNames.length)], fontStyles[ran.nextInt(fontStyles.length)], fontsize));

//随机生成颜色

g.setColor(getRandomColor());

//画验证码

g.drawString(vcode.charAt(i)+"", i*fontsize+10, fontsize+5);

}

//释放此图形的上下文以及它使用的所有系统资源

g.dispose();

returnvcodeImage;

}

/**

* 获得旋转字体的验证码图片

* @paramvcode

* @paramdrawline是否画干扰线

* @return

*/

publicBufferedImagegeneratorRotateVCodeImage(String vcode, booleandrawline){

//创建验证码图片

BufferedImagerotateVcodeImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

Graphics2D g2d = rotateVcodeImage.createGraphics();

//填充背景色

g2d.setColor(new Color(246, 240, 250));

g2d.fillRect(0, 0, width, height);

if(drawline){

drawDisturbLine(g2d);

}

//在图片上画验证码

for(int i = 0;i

BufferedImagerotateImage = getRotateImage(vcode.charAt(i));

相关文档
最新文档