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-8map.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;}}