由于自己的项目登录需要验证码,于是便谢了一个图片验证码生成类。
图片验证实体类 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图片验证码 图片验证码
在IT领域,验证码(CAPTCHA)是一...在提供的压缩包文件“图片验证码生成”中,可能包含了实现上述功能的源代码示例,你可以通过学习和理解这些代码,加深对Java生成图片验证码的理解,并根据实际需求进行调整和优化。
JAVA实现随机图片验证码简单方法.rtf
java生成验证码的工具类,这个现在有依赖可以直接引入调用,但这个工具类没有引入依赖,大家也容易看懂代码,理解其含义。也可直接去工具类中调整生成验证码的宽度、高度、颜色、背景颜色、生成的随机数数量、干扰线...
Java随机生成验证码图片,适用于web登录验证等。个人觉得很不错~
Java 随机生成图片验证码是一种常见的网络安全技术,主要用于防止自动化程序(如机器人)进行恶意操作,例如批量注册、刷票等。在这个过程中,我们通常会创建一个包含随机字符的字符串,然后将其显示为带有扭曲、...
Java生成图像验证码涉及到以下几个关键知识点: 1. **随机数生成**:验证码通常由一组随机生成的字符组成,可以是数字、字母或者是两者的混合。Java中的`Random`类可以用于生成随机数,然后结合字符集(如ASCII或...
Java生成图片验证码的过程涉及图像处理、随机数生成以及字符串编码等多个知识点。 首先,验证码的核心是生成一个随机的字符串,通常包含字母和数字。在Java中,可以使用`Random`类配合字符数组来生成这种字符串。...
### Java代码生成图片验证码知识点详解 #### 一、概述 在Web应用中,为了防止恶意登录或自动化操作,经常会用到验证码技术。其中,图片验证码(也称图形验证码)是一种常见的形式,它通过生成带有随机字符和干扰...
Java后端生成图片验证码是一种常见的安全机制,用于防止自动化脚本或机器人进行恶意操作,如批量注册、频繁登录等。这种技术通常涉及到多个组件,包括前端展示、后端生成以及客户端验证。以下是对这个主题的详细说明...
在Java开发中,生成动态GIF验证码是一种常见的安全机制,用于防止自动机器人或者恶意脚本对网站进行非法操作。这种验证码通常包含随机生成的字母、数字或者符号,以动画的形式展示,用户需要输入看到的验证码才能...
Java servlet 自动生成 图片验证码 生成 Java源码
Java生成算数运算中文图片验证码的实现,结合了编程语言、图像处理和安全验证的多种技术,为用户提供了一种既安全又友好的验证方式。下面我们将深入探讨这个主题。 首先,验证码的核心是生成随机的算数运算表达式。...
Java作为一款多用途的编程语言,提供了丰富的库和方法来生成包括GIF格式在内的图片验证码。下面将详细讨论如何在Java中创建GIF动态验证码。 首先,我们需要理解GIF图片验证码的基本构成。它通常包含随机生成的文字...
本资源是java生成图片滑动验证码源码,具体使用可参考https://blog.csdn.net/shiqiangwen/article/details/89888092
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
在本主题“利用jsp生成图片验证码”中,我们将探讨如何在JavaServer Pages (JSP)上下文中创建一个简单的图片验证码,而无需使用Servlet。首先,我们要明白JSP是Java Web开发中的视图层技术,它允许我们在HTML页面中...