45 lines
1.4 KiB
Java
45 lines
1.4 KiB
Java
package com.cdzy.ebikeoperate.utils;
|
||
|
||
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
|
||
import net.glxn.qrgen.core.image.ImageType;
|
||
import net.glxn.qrgen.javase.QRCode;
|
||
|
||
import java.io.ByteArrayOutputStream;
|
||
import java.util.Base64;
|
||
|
||
/**
|
||
* 二维码生成工具类
|
||
*
|
||
* @author dingchao
|
||
* @date 2025/4/1
|
||
* @modified by:
|
||
*/
|
||
public class QRGenUtil {
|
||
|
||
/**
|
||
* 生成二维码并返回Base64编码
|
||
*
|
||
* @param content 二维码内容
|
||
* @return Base64编码的二维码
|
||
*/
|
||
public static String generateQRCodeBase64(String content) {
|
||
try (ByteArrayOutputStream stream = QRCode.from(content)
|
||
.withSize(300, 300) // 尺寸
|
||
.withErrorCorrection(ErrorCorrectionLevel.H) // 纠错等级(H为最高)
|
||
.to(ImageType.PNG) // 输出格式
|
||
.stream()) {
|
||
// 使用 Java 8+ 的 Base64 编码(避免自动换行问题)
|
||
return Base64.getEncoder().encodeToString(stream.toByteArray());
|
||
} catch (Exception e) {
|
||
throw new RuntimeException("生成二维码失败", e);
|
||
}
|
||
}
|
||
|
||
//public static void main(String[] args) {
|
||
// String content = "B726500590095"; // 二维码内容
|
||
// String base64 = generateQRCodeBase64(content);
|
||
// System.out.println("Base64 二维码: " + base64);
|
||
//}
|
||
|
||
}
|