首页 > 其他分享 >Hutool工具类库之图片验证码

Hutool工具类库之图片验证码

时间:2024-09-14 13:54:06浏览次数:11  
标签:类库 lineCaptcha Hutool 验证码 write captcha 写出 图形

一、介绍

 验证码功能位于 cn.hutool.captcha 包中,核心接口为 ICaptcha,此接口定义了以下方法:


createCode: 创建验证码,实现类需同时生成随机验证码字符串和验证码图片

getCode: 获取验证码的文字内容

verify: 验证验证码是否正确,建议忽略大小写

write: 将验证码写出到目标流中

 其中write方法只有一个OutputStream,ICaptcha实现类可以根据这个方法封装写出到文件等方法。


 AbstractCaptcha 为一个ICaptcha抽象实现类,此类实现了验证码文本生成、非大小写敏感的验证、写出到流和文件等方法,通过继承此抽象类只需实现 createImage 方法定义图形生成规则即可。


二、示例

1、LineCaptcha 线段干扰的验证码

// 定义图形验证码的长和宽

LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(200, 100);


// 图形验证码写出,可以写出到文件,也可以写出到流

lineCaptcha.write("D:/line.png");


// 输出code

System.out.println(lineCaptcha.getCode());


// 验证图形验证码的有效性,返回boolean值

lineCaptcha.verify("12345");


// 重新生成验证码

lineCaptcha.createCode();

 

效果如下:



2、CircleCaptcha 圆圈干扰验证码

// 定义图形验证码的长、宽、验证码字符数、干扰元素个数

CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(200, 100);


// 图形验证码写出,可以写出到文件,也可以写出到流

captcha.write("D:/circle.png");


// 验证图形验证码的有效性,返回boolean值

captcha.verify("12345");

 

效果如下:



3、ShearCaptcha 扭曲干扰验证码

ShearCaptcha captcha = CaptchaUtil.createShearCaptcha(200, 100);


// 图形验证码写出,可以写出到文件,也可以写出到流

captcha.write("D:/shear.png");


// 验证图形验证码的有效性,返回boolean值

captcha.verify("12345");

 

效果如下:


4、GifCaptcha 验证码

GifCaptcha gifCaptcha = CaptchaUtil.createGifCaptcha(200, 100);

gifCaptcha.write("D:/gif.gif");

1

2

效果如下:



5、写出到浏览器(Servlet输出)

ICaptcha captcha = ...;

captcha.write(response.getOutputStream());

//Servlet的OutputStream记得自行关闭哦!

 

6、自定义验证码

有时候标准的验证码不满足要求,比如我们希望使用纯字母的验证码、纯数字的验证码、加减乘除的验证码,此时我们就要自定义CodeGenerator。


// 自定义纯数字的验证码(随机5位数字,可重复)

RandomGenerator randomGenerator = new RandomGenerator("0123456789", 5);

LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(200, 100);

lineCaptcha.setGenerator(randomGenerator);


// 自定义验证码内容为四则运算方式

ShearCaptcha shearCaptcha = CaptchaUtil.createShearCaptcha(200, 45);

shearCaptcha.setGenerator(new MathGenerator());


标签:类库,lineCaptcha,Hutool,验证码,write,captcha,写出,图形
From: https://blog.51cto.com/u_16270487/12016304

相关文章

  • 标准IO流类库 语法练习
    1.编写函数,接受一个istream&参数,返回值类型也是istream&。此函数须从给定流中读取数据,直至遇到文件结束标识时停止。它将读取的数据打印在标准输出上。完成这些操作后,在返回流之前,对流进行复位,使其处于有效状态。1#include<iostream>2usingnamespacestd;3istream&fu......
  • 【Python爬虫系列】_016.关于登录和验证码
    我的个人主页:......
  • PbootCMS留言板取消验证码
    取消留言或自定义表单中的验证码可以提高用户体验,但同时也可能增加垃圾信息和恶意提交的风险。如果你确实需要取消验证码,可以按照以下步骤操作:1.确认需求在取消验证码之前,请确认以下几点:安全风险:取消验证码可能会增加垃圾信息和恶意提交的风险。替代方案:是否有其他安全措施......
  • vue2动态生成(绘制)图形验证码(验证码图片)
     方案1:js绘制条形验证码 参考文档:https://blog.csdn.net/LOVE_mingjing/article/details/130622848 utils文件夹下新建GVerify.js文件:functionGVerify(options){//创建一个图形验证码对象,接收options对象为参数this.options={//默认options参数值......
  • PbootCMS如何取消后台、留言、自定义表单验证码
    取消PBootCMS后台、留言、自定义表单的验证码是一个相对直接的过程。如果你想要取消这些地方的验证码,可以按照以下步骤操作:登录后台:使用管理员账号登录PBootCMS的后台管理系统。进入全局配置:在后台管理界面中,找到“全局配置”或类似的设置入口。找到安全配置:在......
  • 手搓一个验证码
    importioimportosimportstringfromrandomimportchoice,randrange,samplefromPILimportImage,ImageDraw,ImageFontdefgenerate_captcha():img_width=58img_height=30font_size=16font_color=["black","dark......
  • 《JavaEE进阶》----14.<SpringMVC配置文件实践之【验证码项目】>
    本篇博客介绍的是Google的开源项目Kaptcha来实现的验证码。这种是最简单的验证码。也是很常见的一种验证码。可以去看项目结果展示。就可以明白这个项目了。前言:随着安全性的要求越来越高、很多项目都使用了验证码。如今验证码的形式也是有许许多多、更复杂的图形验证码......
  • Springboot使用kaptcha生成验证码
    <dependency><groupId>com.youkol.support.kaptcha</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version></dependency>importcom.google.code......
  • 使用SVM在数字验证码识别中的应用研究课程报告
    第1章概要设计1.1设计目的支持向量机作为一类强大的监督学习模型,以其出色的泛化能力,在手写数字识别、面部检测、图像分类等多个领域展现出了其优越性。其在处理小样本、非线性及高维模式识别任务中表现尤为突出。SVM通过构造最优超平面,在保证分类准确性的同时,最大限度地提高了......
  • Java 结合vue 和 阿里 写一个短信验证码功能
    要实现一个基于Java、Vue和阿里云的短信验证码功能,需要完成几个步骤。这个功能通常包括前端(Vue.js)和后端(JavaSpringBoot)部分,以及阿里云短信服务的集成。以下是一个大致的实现步骤:前提条件阿里云账户:需要有一个阿里云账户,并开通了短信服务。Java开发环境:确保有Java开发环境和......