当前位置: 代码迷 >> 综合 >> 【SpringBoot学习】18、SpringBoot 使用 zxing 工具生成二维码,实现微信扫描可跳转
  详细解决方案

【SpringBoot学习】18、SpringBoot 使用 zxing 工具生成二维码,实现微信扫描可跳转

热度:44   发布时间:2023-12-26 18:44:58.0

文章目录

  • 1、zxing 生成二维码
      • (1)相关依赖
      • (2)工具类
      • (3)生成效果
  • 微信公众号

1、zxing 生成二维码

(1)相关依赖

<!-- 二维码 -->
<dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.3.0</version>
</dependency>
<dependency><groupId>com.google.zxing</groupId><artifactId>javase</artifactId><version>3.3.0</version>
</dependency>

(2)工具类

  • 生成的文件位置在项目根目录下的 upload 文件夹中,打包上线后就是在 jar 包的同级目录
  • 保存数据库的格式为/tmp/code/2020-10-26/9664f77b-4e1e-4d5c-804f-743f2cfe5ad9.png
  • 上面的文件路径返回给前端需要加上服务器的访问路径
import cn.hutool.core.date.DateUtil;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.UUID;/*** 生成二维码** @author Tellsea* @date 2020/10/25*/
public class QrCodeGeneratorUtils {
    /*** 文件上传的保存路径*/public static String UPLOAD_PATH = System.getProperty("user.dir") + File.separator + "upload" + File.separator;/*** 生成二维码,返回相对路径** @param text* @return*/public static String generateQRCodeImage(String text) {
    HashMap hashMap = new HashMap(16);// 设置二维码字符编码hashMap.put(EncodeHintType.CHARACTER_SET, "UTF-8");// 设置二维码纠错等级hashMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);// 设置二维码边距hashMap.put(EncodeHintType.MARGIN, 1);try {
    // 开始生成二维码BitMatrix bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, 300, 300, hashMap);String fileName = UUID.randomUUID() + ".png";String tempPath = "code" + File.separator + DateUtil.today() + File.separator;String targetPath = UPLOAD_PATH + tempPath;File fileDir = new File(targetPath);if (!fileDir.exists()) {
    fileDir.mkdirs();}// 导出到指定目录MatrixToImageWriter.writeToPath(bitMatrix, "png", new File(targetPath + fileName).toPath());return ("/tmp/" + tempPath + fileName).replace("\\", "/");} catch (WriterException e) {
    e.printStackTrace();} catch (IOException e) {
    e.printStackTrace();}return null;}public static void main(String[] args) {
    String text = "";// 扫码查看当前文章text = "https://tellsea.4kb.cn/wx/customerGroup/customerCodeOk?customerGroupId=1";System.out.println(QrCodeGeneratorUtils.generateQRCodeImage(text));}
}

(3)生成效果

访问效果为浏览器打开当前页面
在这里插入图片描述

微信公众号