1、引入二维码生成库
使用一个支持二维码生成的库,如ZXing
(Zebra Crossing),它提供了二维码生成的工具和API。
pom.xml文件导入ZXing依赖。
<!-- ZXing 库依赖 -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.5.1</version>
</dependency>
2、实现代码
package com.new3s.asset.utils;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Path;
/**
* 二维码生成
* @author kally
* @date 2024/9/11
*/
public class QrCodeGenerator {
public static void main(String[] args) {
// 定义资产信息
String assetCode = "SBXX202SN7200067"; // 资产编码
String assetName = "3号楼1号电梯"; // 资产名称
String assetModel = "OTIS0980"; // 资产型号
String assetLocation = "电梯设备"; // 资产位置
String department = "物业管理部"; // 使用部门
// 将所有资产信息拼接成一个字符串
String content = "资产编码:" + assetCode + "\n" +
"资产名称:" + assetName + "\n" +
"资产型号:" + assetModel + "\n" +
"资产位置:" + assetLocation + "\n" +
"使用部门:" + department;
try {
// 创建二维码写入器
QRCodeWriter qrCodeWriter = new QRCodeWriter();
// 编码内容为二维码
BitMatrix bitMatrix = qrCodeWriter.encode(new String(content.getBytes("UTF-8"), "ISO-8859-1"),
BarcodeFormat.QR_CODE, 200, 200);
// 定义二维码图片的保存路径
Path path = FileSystems.getDefault().getPath("", "qr_code.png");
// 将二维码写入到文件
MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path);
// 输出二维码保存成功的消息
System.out.println("QR code generated successfully at " + path.toAbsolutePath());
} catch (WriterException | IOException e) {
e.printStackTrace();
}
}
}
3、中文编码转换
如果不做编码转换,生成的二维码大数软件识别不了。备注:对于cpp版本的zxing,只需要加入iconv模块进行字符编码转换,将默认的gb2312转换到utf-8即可。
new String(content.getBytes("UTF-8"), "ISO-8859-1")
4、生成二维码(微信扫码)