1、引入pom依赖
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.3</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.3.3</version>
</dependency>
2、生成二维码工具类
package com.web.utils;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
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 com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Component;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Base64;
import java.util.HashMap;
/**
* 二维码生成
*/
@Component
public class QRCodeUtil {
private static final String CHARSET = "utf-8";
private static final int QRCODE_SIZE = 300;
/**
* 二维码生成
*
* @param content 二维码内容 必填
* @param width 宽度 非必填 默认 300
* @param height 高度 分必填 默认 300
* @return
*/
public static String getQRCode(String content,Integer width,Integer height) {
if (ObjectUtils.isEmpty(width)){
width = QRCODE_SIZE;
}
if (ObjectUtils.isEmpty(height)){
height = QRCODE_SIZE;
}
HashMap map = new HashMap();
map.put(EncodeHintType.CHARACTER_SET,CHARSET);
// 字符编码为UTF-8
map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
// 二维码空白区域,最小为0也有白边,只是很小,最小是6像素左右
map.put(EncodeHintType.MARGIN, 0);
QRCodeWriter qrCodeWriter = new QRCodeWriter();
BitMatrix bitMatrix = null;
try {
bitMatrix = qrCodeWriter.encode(content,
BarcodeFormat.QR_CODE,QRCODE_SIZE, QRCODE_SIZE,map);
} catch (WriterException e) {
throw new RuntimeException(e);
}
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
try {
MatrixToImageWriter.writeToStream(bitMatrix, "PNG", outputStream);
} catch (IOException e) {
throw new RuntimeException(e);
}
Base64.Encoder encoder = Base64.getEncoder();
String text = encoder.encodeToString(outputStream.toByteArray());
return "data:image/png;base64,"+text;
}
}
本文介绍了如何在SpringBoot项目中通过pom依赖引入GoogleZXing库,并展示了如何创建一个工具类生成具有自定义大小和纠错级别的二维码,以Base64编码形式返回。
4532

被折叠的 条评论
为什么被折叠?



