java使用zxing生成二维码,可带logo和底部文字
springboot中整合zxing生成二维码
一、导入依赖
<properties>
<zxing.version>3.4.0</zxing.version>
</properties>
<!--二维码依赖-->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>${zxing.version}</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>${zxing.version}</version>
</dependency>
二、二维码工具类封装QRCodeUtil.java,支持生成BufferedImage 和byte[]
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import lombok.SneakyThrows;
import org.springframework.core.io.ClassPathResource;
import org.springframework.util.StringUtils;
import sun.font.FontDesignMetrics;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.font.FontRenderContext;
import java.awt.font.LineMetrics;
import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.HashMap;
/**
* 二维码生成工具类
* Created by chenzan on 2022/09/19
*/
public class QRCodeUtil {
private static final int QRCODE_SIZE = 320; // 二维码尺寸,宽度和高度均是320
private static final String FORMAT_TYPE = "PNG"; // 二维码图片类型
/**
* 默认需要logo,无底部文字
* 返回 BufferedImage 可以使用ImageIO.write(BufferedImage, "png", outputStream);输出
*
* @param dataStr
* @return 返回 BufferedImage 可以使用ImageIO.write(BufferedImage, "png", outputStream);输出
*/
@SneakyThrows
public static BufferedImage getQRCodeImage