参加2023年的计算机设计大赛国赛,拿到了一等奖。
现在将项目中的工具类代码剥离出来,方便之后项目开发中复用。
实现效果:
代码实现:
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import org.springframework.util.FastByteArrayOutputStream;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.util.Base64;
import java.util.HashMap;
/**
* @Author: KMHRKFC
* @Date: 2022/7/11 20:44
*/
public class QRCodeUtils {
private static int width = 600;
private static int height = 600;
private static String format = "png";
private static HashMap hints;
static {
hints = new HashMap();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); // 设置字符集, utf-8
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M); // 设置容错率
hints.put(EncodeHintType.MARGIN, 1); // 设置边距空白宽度为1
}
public static String str2QRCode(String content) {
FastByteArrayOutputStream os = null;
try {
BitMatrix bitMatrix = new MultiFormatWriter()
.encode(content, BarcodeFormat.QR_CODE, width, height, hints);
BufferedImage image = MatrixToImageWriter.toBufferedImage(bitMatrix);
os = new FastByteArrayOutputStream();
ImageIO.write(image, format, os);
} catch (Exception e) {
e.printStackTrace();
}
return "data:image/png;base64," + Base64.getEncoder().encodeToString(os.toByteArray());
}
}