一、引入相关依赖
<!-- 引入Hutool工具库,简化Java开发,提高开发效率 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.5</version>
</dependency>
<!-- 引入Google ZXing库,用于二维码和条形码的生成与解析 -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.3</version>
</dependency>
二、关于Hutool
介绍
Hutool 是一个小而全的 Java 工具包,通过提供丰富的工具类库来简化 Java 开发。Hutool 包含了许多常用的功能,比如字符串处理、文件操作、日期时间处理、HTTP 请求、加密解密等,可以极大地提高开发效率。
官网
Hutool🍬一个功能丰富且易用的Java工具库,涵盖了字符串、数字、集合、编码、日期、文件、IO、加密、数据库JDBC、JSON、HTTP客户端等功能。https://hutool.cn/
三、代码
○ 基础代码
public class BasicConfiguration {
public static void main(String[] args) {
// 调用 generate 方法生成二维码
// 参数1:二维码的内容,这里是一个URL
// 参数2:二维码的宽度
// 参数3:二维码的高度
// 参数4:二维码的保存路径及文件名
QrCodeUtil.generate("https://www.csdn.net/", 1000,1000,new File("D:\\generateqr_code\\img\\qrcode.png"));
}
}
○ 自定义生成
基本参数
public class CustomParameters {
public static void main(String[] args) {
// 创建二维码配置对象,指定二维码的宽度和高度为1000像素
QrConfig config = new QrConfig(1000,1000);
// 设置二维码的边距为3像素
config.setMargin(3);
// 设置二维码的前景色为蓝色
config.setForeColor(Color.BLUE.getRGB());
// 设置二维码的背景色为白色
config.setBackColor(Color.WHITE.getRGB());
// 生成二维码,参数分别为二维码的内容、配置对象以及二维码图片的保存路径
QrCodeUtil.generate("https://www.csdn.net/", config, new File("D:\\generateqr_code\\img\\CustomParameters.png"));
}
}
带图标
public class Icon {
public static void main(String[] args) {
// 创建二维码配置对象,指定二维码的宽度和高度为1000像素
QrConfig config = new QrConfig(1000, 1000);
// 设置二维码的边距为3像素
config.setMargin(3);
// 设置二维码的前景色为深蓝色
config.setForeColor(new Color(30, 144, 255).getRGB()); // 深蓝色 (#1E90FF)
// 设置二维码的背景色为白色
config.setBackColor(Color.WHITE.getRGB());
// 设置二维码中间的附带图标
config.setImg("D:\\generateqr_code\\default.jpg");
// 生成二维码到文件
QrCodeUtil.generate(
"https://www.csdn.net/", //二维码内容
config, //二维码配置对象
FileUtil.file("D:\\generateqr_code\\img\\Icon.png")//写出到的文件
);
}
}
○ 识别二维码
public class Identify {
public static void main(String[] args) {
// 从指定路径加载二维码图片,并解码
String decode = QrCodeUtil.decode(FileUtil.file("D:\\generateqr_code\\img\\Icon.png"));
// 输出解码结果
System.out.println(decode);
}
}