由于自己的项目登录需要验证码,于是便谢了一个图片验证码生成类。
图片验证实体类 ImageVerification.java
package com.jynine.model;
import java.awt.image.BufferedImage;
import java.io.Serializable;
/**
* 图片验证类
* @ClassName: ImageVerification
* @Description: 图片验证实体类
* @author caijy
* @date 2013-12-9 下午9:32:32
*
*/
public class ImageVerification implements Serializable{
/**
*
*/
private static final long serialVersionUID = -4881192896106347995L;
//图片
private BufferedImage image;
//验证码
private String verifyCode;
public BufferedImage getImage() {
return image;
}
public void setImage(BufferedImage image) {
this.image = image;
}
public String getVerifyCode() {
return verifyCode;
}
public void setVerifyCode(String verifyCode) {
this.verifyCode = verifyCode;
}
}
图片生成类 ImageBuilder.java
package com.jynine.utils;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import com.jynine.model.ImageVerification;
/**
* 图片生成类
* @ClassName: ImageBuilder
* @Description: 图片生成类
* @author caijy caijiuyin@sina.com
* @date 2013-12-9 下午9:28:13
*
*/
public class ImageBuilder {
//图片验证码长度为4
private int length = 4;
//图片宽度
private int width = 80;
//图片高度
private int height = 24;
//字体高度
private int fontHeight = height- 4;
//代码字符
private char[] codeChar = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
'X', 'Y', 'Z','a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
//字符之间的宽度
private int x_space = 3;
//字符与图片左右边框的间隔
private int lr_space = 4;
//一个字符的宽度
private int x = (width - 2*lr_space - x_space*(length-1))/length;
//画直线数量
private int lineSize = height/4;
//字符高度
private int codeY = height - 4;
//圆的半径
private int r = 3;
//噪点的个数
private int np_num = 25;
//验证码对象
private ImageVerification iv;
public ImageVerification builder(){
iv = new ImageVerification();
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = image.createGraphics();
//背景颜色
graphics.setColor(Color.white);
graphics.fillRect(0, 0, width, height);
Font font = new Font(null, Font.BOLD|Font.ITALIC, fontHeight);
graphics.setFont(font);
//边框
graphics.setColor(Color.black);
graphics.drawRect(0, 0, width - 1, height - 1);
//画线
for (int i = 0; i < lineSize; i++) {
int ly = lineSize*(i+1);
graphics.setColor(randomColor());
graphics.drawLine(1, ly, width-2, ly);
}
Random random = new Random();
//生成噪点
for (int i = 0; i < np_num; i++) {
graphics.setColor(randomColor());
int x = random.nextInt(width);
int y = random.nextInt(height);
graphics.fillOval(x, y, r,r);
}
StringBuffer sb = new StringBuffer();
//获取字符
for (int i = 0; i < length; i++) {
graphics.setColor(randomColor());
String codeStr = String.valueOf(codeChar[new Random().nextInt(codeChar.length)]);
sb.append(codeStr);
graphics.drawString(codeStr, lr_space+i*x_space+i*x, codeY);
}
iv.setVerifyCode(sb.toString());
iv.setImage(image);
//清空缓存
graphics.dispose();
return iv;
}
/**
* 随机生成一个颜色
* @return
*/
private Color randomColor(){
// 创建一个随机数生成器类
Random random = new Random();
int red = random.nextInt(255);
int green = random.nextInt(255);
int blue = random.nextInt(255);
return new Color(red, green, blue);
}
public static void main(String[] args) throws IOException {
ImageBuilder iBuilder = new ImageBuilder();
ImageVerification imageVer = iBuilder.builder();
File file = new File("E:/img.png");
ImageIO.write(imageVer.getImage(), "png", file);
}
}
生成的验证码样列:
- 大小: 8 KB
分享到:
相关推荐
java生成图片验证码
java 生成图片验证码 带干扰线等
JAVA图片验证码 图片验证码JAVA图片验证码 图片验证码JAVA图片验证码 图片验证码JAVA图片验证码 图片验证码JAVA图片验证码 图片验证码JAVA图片验证码 图片验证码
JAVA实现随机图片验证码简单方法.rtf
java随机生成图片验证码,很神奇,希望各位大佬喜欢888888
Java生成图片验证码 Java代码
Java随机生成验证码图片,适用于web登录验证等。个人觉得很不错~
java生成验证码的工具类,这个现在有依赖可以直接引入调用,但这个工具类没有引入依赖,大家也容易看懂代码,理解其含义。也可直接去工具类中调整生成验证码的宽度、高度、颜色、背景颜色、生成的随机数数量、干扰线...
Java servlet 自动生成 图片验证码 生成 Java源码
java 生成gif 图片验证码,可以应用于生产环境
java代码生成图形验证码,可以自定义验证字符个数、干扰线条数、图片大小、颜色,自定义图片验证的符号类型包括数字,字母等;
1.部署步骤 1.1 100%可生产使用. 1.2 导入到idea时候选择maven项目 1.3 修改demo里面子项目resources/application.yml的redis... 4.2拖动图片验证码:https://blog.csdn.net/m0_38138879/article/details/117559456
java后台生成背景色透明验证码的方法,可直接调用。本方法只生成随机字符数字组成的四位验证码。
项目已经运行过,完全没有问题,下载以后之间导入myeclipse就可以运行
java web笔记之servlet生成验证码java web笔记之servlet生成验证码
java 动态 gif 验证码 工具类 + servlet调用方法 + 测试jsp
这是我个人从网上载的比较好的方法,跟大家推荐分享下。