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、生成二维码(微信扫码)