首页 > 其他分享 >验证码图片生成 hutool-captcha

验证码图片生成 hutool-captcha

时间:2024-09-14 13:55:33浏览次数:11  
标签:lineCaptcha 前缀 hutool 验证码 captcha 数据格式 circleCaptcha

一、使用的依赖

此处需要引入的依赖hutool-captcha


<!-- 获取图形验证码 -->
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-captcha</artifactId>
    <version>5.8.18</version>
</dependency>

注:hutool-captcha已经包含在了 hutool-all 中,也可以直接引入 hutool-all。


<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.11</version> </dependency>


二、使用依赖

生成验证码的工具是 CaptchaUtil,基本使用方式如下:


/**
 * 获取验证码
 */
@Test
public void getCaptcha() throws FileNotFoundException {

    //生成带有直线干扰的验证码图片
    LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(300, 100, 4, 20);//指定(宽,高,验证码数量,干扰项数量)
    
    //获取验证码的信息
    System.out.println(lineCaptcha.getCode());//验证码的文本信息,用于校对
    
    //将验证码图片转换为base64格式字符串
    System.out.println("不带数据格式前缀:" + lineCaptcha.getImageBase64());//不带数据格式前缀
    System.out.println("带数据格式前缀:" +  lineCaptcha.getImageBase64Data());//带数据格式前缀

    //保存验证码图片
    lineCaptcha.write("D:\\@Information\\ceshia\\1.png");//1传保存路径
    lineCaptcha.write(new File("D:\\@Information\\ceshia\\2.png"));//2传文件
    lineCaptcha.write(new FileOutputStream(new File("D:\\@Information\\ceshia\\3.png")));//3传输出流

    boolean b = lineCaptcha.verify("1wcc");//校验用户输入的验证码, b为true表示验证码正确
    
}

验证码图片生成 hutool-captcha_数据格式

createLineCaptcha验证码生成

关于base64图片:base64可以将图片转为字符串,将验证码图片以base64格式发送。可以减少http请求次数,同时将图片和对应的key发送到前端页面,而服务器上只需要保存验证码的值和key用来验证即可。

在上例中lineCaptcha.getImageBase64()获取的是不带前缀的base64格式图片,发送页面上去后需要手动拼接数据格式前缀才能正常识别图片。而lineCaptcha.getImageBase64Data()获取的是已经带上数据前缀的字符串,不许要进行额外的处理。


CaptchaUtil验证码生成工具不只是有createLineCaptcha一个方法,还有createCircleCaptchacreateShearCaptchacreateGifCaptcha等不同的方法。

它们的区别就是验证码的干扰项不一样。具体使用和区别可以简单浏览下:


/**
 * 获取验证码`createCircleCaptcha`
 */
@Test
public void getCaptcha() throws FileNotFoundException {
    //生成随机圆圈干扰验证码图片
    CircleCaptcha circleCaptcha = CaptchaUtil.createCircleCaptcha(300, 100, 4, 20);//指定(宽,高,验证码数量,干扰项数量)
    //获取验证码的信息
    System.out.println(circleCaptcha.getCode());//验证码的文本信息,用于校对
    //将验证码图片转换为base64格式字符串
    System.out.println("不带数据格式前缀:" + circleCaptcha.getImageBase64());//不带数据格式前缀
    System.out.println("带数据格式前缀:" +  circleCaptcha.getImageBase64Data());//带数据格式前缀

    //保存验证码图片
    circleCaptcha.write("D:\\@Information\\ceshia\\1.png");//传保存路径
    circleCaptcha.write(new File("D:\\@Information\\ceshia\\2.png"));//传文件
    circleCaptcha.write(new FileOutputStream(new File("D:\\@Information\\ceshia\\3.png")));//传输出流

    boolean b = lineCaptcha.verify("g2zf");//校验用户输入的验证码, b为true表示验证码正确
}




标签:lineCaptcha,前缀,hutool,验证码,captcha,数据格式,circleCaptcha
From: https://blog.51cto.com/u_16265692/12016283

相关文章

  • Hutool工具类库之图片验证码
    一、介绍 验证码功能位于cn.hutool.captcha包中,核心接口为ICaptcha,此接口定义了以下方法:createCode:创建验证码,实现类需同时生成随机验证码字符串和验证码图片getCode:获取验证码的文字内容verify:验证验证码是否正确,建议忽略大小写write:将验证码写出到目标流中 其中wr......
  • 【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开发环境和......