java实现图片验证码_JAVA实现图片验证码
一、创建image工具类
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
public class ImageUtil {
// 图片的宽度。
private int width = 160;
// 图片的高度。
private int height = 40;
// 验证码字符个数
private int codeCount = 5;
// 验证码干扰线数
private int lineCount = 150;
// 验证码
private String code = 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‘};
private BufferedImage bufferedImage;
private ImageUtil(int width, int height){
this.width = width;
this.height = height;
}
public ImageUtil(int width, int height, int codeCount, int lineCount){
this(width, height);
this.codeCount = codeCount;
this.lineCount = lineCount;
createCodeImage();
}
private void createCodeImage(){
//字符所在x坐标
int x = 0;
//字体高度
int fontHeight = 0;
//字符所在y坐标
int codeY = 0;
int red = 0;
int green = 0;
int blue = 0;
x = width / (codeCount + 2);
fontHeight = height - 2;
codeY = height - 4;
bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);
Graphics2D graphics2D = bufferedImage.createGraphics();
Random random = new Random();
graphics2D.setColor(Color.WHITE);
graphics2D.fillRect(0, 0, width,height);
Font font = new Font("Fixedays",Font.PLAIN,fontHeight);
graphics2D.setFont(font);
for (int i = 0; i < lineCount; i++) {
//x轴第一个点的位置
int x1 = random.nextInt(width);
//y轴第一个点的位置
int y1 = random.nextInt(height);
//x轴第二个点的位置
int x2 = x1 + random.nextInt(width >> 2);
//y轴第二个点的位置
int y2 = y1 + random.nextInt(height >> 2);
red = random.nextInt(255);
green = random.nextInt(255);
blue = random.nextInt(255);
graphics2D.setColor(new Color(red, green, blue));
graphics2D.drawLine(x1, y1, x2, y2);
}
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);
graphics2D.setColor(new Color(red, green, blue));
graphics2D.drawString(strRand, (i +1) * x, codeY);
randomCode.append(strRand);
}
code = randomCode.toString();
}
public void write(String path) throws IOException {
OutputStream outputStream = new FileOutputStream(path);
this.write(outputStream);
outputStream.flush();
outputStream.close();
}
public void write(OutputStream outputStream) throws IOException {
ImageIO.write(bufferedImage, "png", outputStream);
}
public BufferedImage getBufferedImage(){
return bufferedImage;
}
public String getCode(){
return code;
}
}
二、controller
@GetMapping(value = "/code")
public String getCode(HttpServletRequest request, HttpServletResponse response) throws Exception{
response.setContentType("image/jpeg");
//禁止图像缓存
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
HttpSession session = request.getSession();
ImageUtil imageUtil = new ImageUtil(120, 40, 5,30);
session.setAttribute("code", imageUtil.getCode());
imageUtil.write(response.getOutputStream());
return null;
}
三、前台调用
$("#vimg").on("click",function () { var timestamp = (new Date()).valueOf(); $(this).attr("src","code?timestamp=" + timestamp); });
java实现图片验证码_JAVA实现图片验证码相关推荐
- java验证图片大小_java 校验图片的大小、尺寸、比例
import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.i ...
- java邮箱验证码_Java实现邮箱验证码
原标题:Java实现邮箱验证码 声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 邮箱验证码 一般能使用邮箱注 ...
- java 图片水印_JAVA实现图片水印
一.JAVA图片水印实现原理 1.1.JAVA图片水印实现思路 1.创建缓存图片对象. 2.创建Java绘图工具对象. 3.使用绘图工具对象将原图绘制到缓存图片对象. 4.使用绘图工具将水印(文字/图 ...
- java制作水效果_java实现图片加水印效果
图片加水印代码,这些代码不常用,但是用到的时候需要注意的地方也挺多的,每次都重写比较麻烦,记下来备忘.代码是图片加水印的一般流程,可根据实际项目需要自行修改. 注:代码在JPG和PNG格式图片下测试通 ...
- java 修改图片分辨率_java 修改图片的像素大小,清晰度
修改图片的像素,清晰度 代码 /** * 改变图片 像素 * * @param file * @param qality 参数qality是取值0~1范围内 清晰程度 数值越小分辨率越低 * @par ...
- background图片叠加_java实现图片的叠加效果
实现效果图 这个效果的实现思路是: 1.先准备一张背景图,像素自己去定.像素越高最后生成的图片会更清晰,当然图片也会越大,注意这个背景图一定要是png格式的,要放用户头像的位置要镂空,透明的. 至于为 ...
- java 当中的验证码_Java Web中验证码的实现
验证码本质上是一张图片,即应该用标签,其中src属性决定了这是一张什么图片,因此可以让src为某一Action,每次点击时,都会更新这个src属性. ① 前台JSP页面 My JSP 'imgcode ...
- java 登录验证码_java实现登录验证码
本文实例为大家分享了java实现登录验证码的具体代码,供大家参考,具体内容如下 1.ValidateCode.java import java.awt.Color; import java.awt.F ...
- java exif 语言编码_Java读取图片EXIF信息的代码
Java读取图片EXIF信息的代码 本文实例讲述了Java读取图片EXIF信息的方法.分享给大家供大家参考.具体分析如下: 首先介绍一下什么是EXIF,EXIF是Exchangeable Image ...
最新文章
- 开源oa_开源OA:可以轻松支持云文档管理
- 工业界常用的三维重建技术有哪些?
- 2.1.4 什么是ASCII码?汉字的表示和编码是怎样的?
- 双流棠湖中学怎么样_2020年双流中学和棠湖中学哪个好?
- java获取表主外键_通过 jdbc 分析数据库中的表结构和主键外键
- Android 第五课 常用控件的使用方法(TextView、Button、EditView、 ImageView、 ProgressBar、 ProgressDialog等)
- 高可用性的HDFS—Hadoop分布式文件系统深度实践
- 图论 —— 网络流 —— 费用流 —— zkw 费用流
- 创建设计模式 - 抽象工厂设计模式
- 计算机网络笔记整理(第七版)谢希仁
- 如何在线批量将JPG图片转Word文件
- 麒麟案例 | 创业之路,跨境起“杭”
- pm runtime
- 关于boa+cgi上传文件大小的问题
- HTML系列之文本格式化标签
- html画布里增添颜色,在HTML5画布中更改笔触颜色
- 计算机word插图教案,中学信息技术《配插图》教案
- algebraic reconstruction technique (ART)算法
- android gta5 下载地址,gta5 for android
- 程序设计-在校整理-02 食堂自动化管理系统
热门文章
- mysql获取中文拼音_mysql获取汉字拼音
- 计算机组成与系统结构(物联网专业)
- MTK资料:在MT6735平台上如何调试SII9024A
- 计算机相关装备有哪些,DNF装备搭配计算器_官方网站_17173DNF专区_17173.com中国游戏门户站...
- BeyondCompare使用
- C++ 语言禁止派生类 - final specifier
- 图像处理笔试题面试题
- 移动硬盘拷贝linux文件,Linux(CentOS)挂载U盘、移动硬盘以及文件拷贝、备份
- 微软小娜关闭服务器,请问微软小娜 (Cortana) 要退出中国了吗?
- java毕业设计——基于java+Jsoup+HttpClient的网络爬虫技术的网络新闻分析系统设计与实现(毕业论文+程序源码)——网络新闻分析系统