• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Java生成图形验证码工具类的详细介绍

java 搞代码 4年前 (2022-01-09) 21次浏览 已收录 0个评论

这篇文章主要介绍了Java生成图形验证码工具类,本文思路明确介绍的非常详细,需要的朋友可以参考下

生成验证码效果

ValidateCode.java 验证码生成类

package cn.dsna.util.images; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Random; import javax.imageio.ImageIO; /**  * 验证码生成器  * @author dsna  *  */ public class ValidateCode {  // 图片的宽度。  private int width = 160;  // 图片的高度。  private int height = 40;  // 验证码字符个数  private int codeCount = 5;  // 验证码干扰线数  private int lineCount = 150;  // 验证码  private String code = null;  // 验证码图片Buffer  private BufferedImage buffImg=null;  private char[] codeSequence = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',    'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',    'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9' };  public ValidateCode() {   this.createCode();  }  /**   *   * @param width 图片宽   * @param height 图片高   */  public ValidateCode(int width,int height) {   this.width=width;   this.height=height;   this.createCode();  }  /**   *   * @param width 图片宽   * @param height 图片高   * @param codeCount 字符个数   * @param lineCount 干扰线条数   */  public ValidateCode(int width,int height,int codeCount,int lineCount) {   this.width=width;   this.height=height;   this.codeCount=codeCount;   this.lineCount=lineCount;   this.createCode();  }  public void createCode() {   int x = 0,fontHeight=0,codeY=0;   int red = 0, green = 0, blue = 0;   x = width / (codeCount +2);//每个字符的宽度   fontHeight = height - 2;//字体的高度   codeY = height - 4;   // 图像buffer   buffImg = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);   Graphics2D g = buffImg.createGraphics();   // 生成随机数   Random random = new Random();   // 将图像填充为白色   g.setColor(Color.WHITE);   g.fillRect(0, 0, width, height);   // 创建字体   ImgFontByte imgFont=new ImgFontByte();   Font font =imgFont.getFont(fontHeight);   g.setFont(font);   for (int i = 0; i < lineCount; i++) {    int xs = random.nextInt(width);    int ys = random.nextInt(height);    int xe = xs+random.nextInt(width/8);    int ye = ys+random.nextInt(height/8);    red = random.nextInt(255);    green = random.nextInt(255);    blue = random.nextInt(255);    g.setColor(new Color(red, green, blue));    g.drawLine(xs, ys, xe, ye);   }   // randomCode记录随机产生的验证码   StringBuffer randomCode = new StringBuffer();   // 随机产生codeCount个字符的验证码。   for (int i = 0; i < codeCount; i++) {    String strRand = String.valueOf(codeSequence[random.nextInt(codeSequence.length)]);    // 产生随机的颜色值,让输出的每个字符的颜色值都将不同。    red = random.nextInt(255);    green = random.nextInt(255);    blue = random.nextInt(255);    g.setColor(new Color(red, green, blue));    g.drawString(strRand, (i + 1) * x, codeY);    // 将产生的四个随机数组合在一起。    randomCode.append(strRand);   }   // 将四位数字的验证码保存到Session中。   code=randomCode.toString();   }  public void write(String path) throws IOException {   OutputStream sos = new FileOutputStream(path);    this.write(sos);  }  public void write(OutputStream sos) throws IOException {    ImageIO.write(buffImg, "png", sos);    sos.close();  }  public BufferedImage getBuffImg() {   return buffImg;  }  public String getCode() {   retu<span style="color:transparent">来1源gaodai#ma#com搞*代#码1网</span>rn code;  } }

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Java生成图形验证码工具类的详细介绍
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址