1. 程式人生 > 其它 >實現Java生成二維碼功能

實現Java生成二維碼功能

java實現二維碼

參考:https://mp.weixin.qq.com/s/RzaU32wbWXk66wfJcN8YvA

文章目錄

  • 效果圖
  • 步驟
    • maven依賴
    • 工具類
    • service
  • 擴充套件
    • 區域網除錯
    • 線上除錯

效果圖

步驟

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, 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, 350, 350, 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