热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

生成图片验证码工具类

importorg.apache.commons.codec.binary.Base64;importjavax.imageio.ImageIO;importjava.awt.*;

import org.apache.commons.codec.binary.Base64;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Random;
/**
* Created by IntelliJ IDEA
* 这是一个神奇的Class
*
*
@author zhz
* @date 2020/3/26 13:45
*/
public class CheckPicCodeUtil {
private static String picCode;
public CheckPicCodeUtil() {
}
public static String getPicCode() {
return picCode;
}
public static void setPicCode(String picCode) {
CheckPicCodeUtil.picCode
= picCode;
}
public static String getCheckCode(){
//验证码中的字符由数字和大小写字母组成
String code = "0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
Random r
= new Random();
StringBuffer sb
= new StringBuffer();
for (int i = 0; i <4; i++) {
sb.append(code.charAt(r.nextInt(code.length())));
}
return sb.toString();
}
public static BufferedImage showPic() throws IOException {
String code
=getCheckCode();
setPicCode(code);
int 黑体",Font.BOLD,24));
g.drawString(code,
15,20);
g.dispose();
//图像生效
return image;
}
public static String encodeBase64ImgCode() throws IOException{
BufferedImage codeImg
=showPic();
ByteArrayOutputStream out
= new ByteArrayOutputStream();
ImageIO.write(codeImg,
"JPEG", out);
byte[] b = out.toByteArray();
String imgString
= Base64.encodeBase64String(b);
return "data:image/JPEG;base64," + imgString;
}
public static void main(String[] args) throws IOException {
String base64PicCodeImage
= encodeBase64ImgCode();
String checkCode
= getPicCode();
System.out.println(
"验证码==》"+checkCode);
System.out.println(
"base64图片字符串==》"+base64PicCodeImage);
}
}

验证结果:


DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
head>
<body>
<img src="data:image/JPEG;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAeAFADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigCle3N7Bc2qWun/aYpHxNJ5yp5K5HOD97qTgenvV2uS8WXl1ba/4bjguZoo5rrbKqOVDjdHwQOo5PX1q34w8Rf2BpX7lsXtxlYMpuAxjcx7cA8e5HBGa53WjFzcto/5GLqqPM30I28V+b41g0K1jjaIbxPKTk7ghbC4PGMYOe+RgY56avKNN1TR9J1vQ0hulaztY5JLi4COczOhVuCAdvyoBgfXvW5r2spL4u0aJ9UuLbSJ7ZZi0UjRBtxbG4jBAOFHPQZ6cmuelivdcpO7v917fh5mVPEe63J31/wAju65+71y6g8bWGirHCba4gMjsQd4ID9DnGPlHb1rL8DXUh0STUdUu7pmedo0luJnKbML6naPmBG714z2pdS/5Kto//Xo38pa2lVlKnCa0u1+ZcqjlCMlpdo6+aZYQm4El3CKq9SSf6DJPsDUlVE/0jUJGP3Lb5FH+2QCT+RAB92q3XRFt3ZrGTld9AoooqizG1nQP7X1LSrz7T5X2Cbzdnl7vM5U4zkY+779a2aKKlQim5LdkqKTbXUzJ9DtZ/EFtrTSTC5t4zGigjYQd3UYzn5j39K5vV7C4k8YtPPb39pZvDsS90sMZJCApxJt3HGcgfKCeOoHHb1Tv71tPia5kQPbKBv2/fBzjjseo9MY71lVoxku2tyZUVPRd7mP4dk1d9RvEma5fSYgsds99HsnZgBk9ASp55YZ6d91M1Dw6LfW4NcsZo4Wt4vKjtTCSjM25QBhhtyX7cZ5PU109VJP39+kJ+5ComYf3iSQv1Awx+oU0OHLDlvfX8en3EThaFt309f8AgENnOLSKO1vMRXBPLZOyV2OSVYgDJJPy8HrgYwa0aa6LIjI6hkYEMrDII9DVT7HLbc2Uu1R/ywly0f0U9U7AYyoH8NdKjG1loapcqsj/2Q==
"
>
body>
html>

技术分享图片

 

参考:https://blog.csdn.net/Solder_Sun/article/details/81363117

 


推荐阅读
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • 使用多项式拟合分析淘宝双11销售趋势
    根据天猫官方数据,2019年双11成交额达到2684亿元,再次刷新历史记录。本文通过多项式拟合方法,分析并预测未来几年的销售趋势。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 本文详细介绍了如何在 Django 项目中使用 Admin 管理后台,包括创建超级用户、启动项目、管理数据模型和修改用户密码等步骤。 ... [详细]
  • 在使用Eclipse进行调试时,如果遇到未解析的断点(unresolved breakpoint)并显示“未加载符号表,请使用‘file’命令加载目标文件以进行调试”的错误提示,这通常是因为调试器未能正确加载符号表。解决此问题的方法是通过GDB的`file`命令手动加载目标文件,以便调试器能够识别和解析断点。具体操作为在GDB命令行中输入 `(gdb) file `。这一步骤确保了调试环境能够正确访问和解析程序中的符号信息,从而实现有效的调试。 ... [详细]
  • 本文探讨了如何利用Java代码获取当前本地操作系统中正在运行的进程列表及其详细信息。通过引入必要的包和类,开发者可以轻松地实现这一功能,为系统监控和管理提供有力支持。示例代码展示了具体实现方法,适用于需要了解系统进程状态的开发人员。 ... [详细]
  • 在Android应用开发中,实现与MySQL数据库的连接是一项重要的技术任务。本文详细介绍了Android连接MySQL数据库的操作流程和技术要点。首先,Android平台提供了SQLiteOpenHelper类作为数据库辅助工具,用于创建或打开数据库。开发者可以通过继承并扩展该类,实现对数据库的初始化和版本管理。此外,文章还探讨了使用第三方库如Retrofit或Volley进行网络请求,以及如何通过JSON格式交换数据,确保与MySQL服务器的高效通信。 ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • SQLite数据库CRUD操作实例分析与应用
    本文通过分析和实例演示了SQLite数据库中的CRUD(创建、读取、更新和删除)操作,详细介绍了如何在Java环境中使用Person实体类进行数据库操作。文章首先阐述了SQLite数据库的基本概念及其在移动应用开发中的重要性,然后通过具体的代码示例,逐步展示了如何实现对Person实体类的增删改查功能。此外,还讨论了常见错误及其解决方法,为开发者提供了实用的参考和指导。 ... [详细]
  • 在 Vue 项目中,为了提高页面加载速度和优化用户体验,实现图片上传前的压缩处理至关重要。本文介绍了如何通过集成第三方库和自定义组件,有效减小图片文件大小,确保在不影响图像质量的前提下,提升应用性能。 ... [详细]
  • 本文介绍如何通过 Python 的 `unittest` 和 `functools` 模块封装一个依赖方法,用于管理测试用例之间的依赖关系。该方法能够确保在某个测试用例失败时,依赖于它的其他测试用例将被跳过。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 字节流(InputStream和OutputStream),字节流读写文件,字节流的缓冲区,字节缓冲流
    字节流抽象类InputStream和OutputStream是字节流的顶级父类所有的字节输入流都继承自InputStream,所有的输出流都继承子OutputStreamInput ... [详细]
  • 利用 Zend Framework 实现高效邮件发送功能 ... [详细]
  • 通过使用七牛云存储服务,本文详细介绍了如何将本地图片高效上传至云端,并实现了内容的便捷管理。借助七牛云的 Python SDK,文章提供了从认证到文件上传的具体代码示例,包括导入必要的库、生成上传凭证以及处理文件路径等关键步骤。此外,还探讨了如何利用七牛云的 URL 安全编码功能,确保数据传输的安全性和可靠性。 ... [详细]
author-avatar
男人要走火_293
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有