1. 程式人生 > 程式設計 >SpringBoot生成二維碼的實現

SpringBoot生成二維碼的實現

效果圖

在這裡插入圖片描述

步驟

maven依賴

<!--    生成二維碼-->
    <dependency>
      <groupId>com.google.zxing</groupId>
      <artifactId>javase</artifactId>
      <version>3.3.0</version>
    </dependency>

工具類

package com.bennyrhys.mall.util;

import com.google.zxing.BarcodeFormat;
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 java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Path;

/**
 * 描述:   生成二維碼工具
 */
public class QRCodeGenerator {


  public static void generateQRCodeImage(String text,int width,int height,String filePath)
      throws WriterException,IOException {
    QRCodeWriter qrCodeWriter = new QRCodeWriter();
    BitMatrix bitMatrix = qrCodeWriter.encode(text,BarcodeFormat.QR_CODE,width,height);
    Path path = FileSystems.getDefault().getPath(filePath);
    MatrixToImageWriter.writeToPath(bitMatrix,"PNG",path);
  }

  public static void main(String[] args) {
    try {
      generateQRCodeImage("Hello World",350,"E:/JAVA/mall/src/main/resources/images/QRTest.png");
    } catch (WriterException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

service

/**
   * 生成二維碼
   * 圖片可解析出訪問的支付對應訂單號的支付連線
   * @param orderNo 訂單號
   * @return 返回圖片地址
   */
  @Override
  public String qrcode(String orderNo) {
    ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
    HttpServletRequest request = attributes.getRequest();

    String address = ip + ":" + request.getLocalPort();
    String payUrl = "http://" + address + "/pay?orderNo=" + orderNo;
    try {
      QRCodeGenerator.generateQRCodeImage(payUrl,Constant.FILE_UPLOAD_PATH + orderNo + ".png");
    } catch (WriterException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
    String pngAddress = "http://" + address + "/images-dev/" + orderNo + ".png";
    return pngAddress;
  }

擴充套件

區域網除錯

在這裡插入圖片描述

線上除錯

切換ip
# 指定IP(防止ip轉發獲取的是內網ip) file.upload.ip=127.0.0.1

到此這篇關於SpringBoot生成二維碼的實現的文章就介紹到這了,更多相關SpringBoot生成二維碼內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!