SpringBoot使用Hutool生成二維碼

Hutool是一個小而全的Java工具類庫,通過靜態方法封裝,降低相關API的學習成本,提高工作效率,使Java擁有函數式語言般的優雅,讓Java語言也可以“甜甜的”。

官方地址:https://hutool.cn/docs/#/

郵件文檔地址:https://hutool.cn/docs/#/extra/%E4%BA%8C%E7%BB%B4%E7%A0%81%E5%B7%A5%E5%85%B7-QrCodeUtil

 

一、添加依賴

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.3.4</version>
</dependency>

<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>core</artifactId>
    <version>3.3.3</version>
</dependency>

 

二、生成二維碼

(1)生成簡單的二維碼

import cn.hutool.core.io.FileUtil;
import cn.hutool.extra.qrcode.QrCodeUtil;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class QRcodeController {

    private final static String URL = "https://my.oschina.net/piaoxianren/blog/4791620";

    /**
     * 生成簡單二維碼
     * @return
     */
    @GetMapping("/generateQRCode")
    public String generateQRCode(){
        QrCodeUtil.generate(URL, 300, 300, FileUtil.file("/Users/piao/Downloads/qrcode1.jpg"));

        return "生成成功";
    }
}

請求接口地址:http://127.0.0.1:8082/generateQRCode

效果圖如下:

 

(2)生成附帶logo二維碼

import cn.hutool.core.io.FileUtil;
import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.hutool.extra.qrcode.QrConfig;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class QRcodeController {

    private final static String URL = "https://my.oschina.net/piaoxianren/blog/4791620";

    /**
     * 生成附帶logo二維碼
     * @return
     */
    @GetMapping("/generateImgQRcode")
    public String generateImgQRcode(){
        QrCodeUtil.generate(URL,
                //附帶logo
                QrConfig.create().setImg("/Users/gongzhiqiang/Downloads/ylsb.jpg"),
                FileUtil.file("/Users/gongzhiqiang/Downloads/qrcode2.jpg"));

        return "生成成功";
    }
}

請求接口地址:http://127.0.0.1:8082/generateImgQRcode

效果圖如下:

 

(3)生成彩色二維碼

通過QrConfig可以自定義二維碼的生成參數,例如長、寬、二維碼的顏色、背景顏色、邊距等參數。

import cn.hutool.core.io.FileUtil;
import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.hutool.extra.qrcode.QrConfig;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.awt.*;

@RestController
public class QRcodeController {

    private final static String URL = "https://my.oschina.net/piaoxianren/blog/4791620";

    /**
     * 生成彩色二維碼
     * @return
     */
    @GetMapping("/generateColoursQRcode")
    public String generateColoursQRcode(){
        QrConfig config = new QrConfig(300, 300);
        // 設置邊距,既二維碼和背景之間的邊距
        config.setMargin(3);
        // 設置前景色,既二維碼顏色(青色)
        config.setForeColor(Color.CYAN);
        // 設置背景色(灰色)
        config.setBackColor(Color.GRAY);

        // 生成二維碼到文件,也可以到流
        QrCodeUtil.generate(URL, config, FileUtil.file("/Users/gongzhiqiang/Downloads/qrcode3.jpg"));

        return "生成成功";
    }
}

請求接口地址:http://127.0.0.1:8082/generateColoursQRcode

效果圖如下:

 

(4)調整糾錯二維碼

很多時候,二維碼無法識別,這時就要調整糾錯級別。糾錯級別使用zxing的ErrorCorrectionLevel枚舉封裝,包括:L、M、Q、H幾個參數,由低到高。低級別的像素塊更大,可以遠距離識別,但是遮擋就會造成無法識別。高級別則相反,像素塊小,允許遮擋一定範圍,但是像素塊更密集。

import cn.hutool.core.io.FileUtil;
import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.hutool.extra.qrcode.QrConfig;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class QRcodeController {

    private final static String URL = "https://my.oschina.net/piaoxianren/blog/4791620";

    /**
     * 調整糾錯二維碼
     * @return
     */
    @GetMapping("/adjustmentQRcode")
    public String adjustmentQRcode(){
        QrConfig config = new QrConfig();
        // 高糾錯級別
        config.setErrorCorrection(ErrorCorrectionLevel.H);
        QrCodeUtil.generate(URL, config, FileUtil.file("/Users/gongzhiqiang/Downloads/qrcode4.jpg"));

        return "生成成功";
    }
}

請求接口地址:http://127.0.0.1:8082/adjustmentQRcode

效果圖如下:

 

(5)解析二維碼

import cn.hutool.core.io.FileUtil;
import cn.hutool.extra.qrcode.QrCodeUtil;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class QRcodeController {
    
    /**
     * 解析二維碼
     * @return
     */
    @GetMapping("/analysisQRcode")
    public String analysisQRcode(){
        String decode = QrCodeUtil.decode(FileUtil.file("/Users/gongzhiqiang/Downloads/qrcode1.jpg"));
        System.out.println("地址爲:" + decode);

        return "解析成功:" + decode;
    }
}

請求接口地址:http://127.0.0.1:8082/adjustmentQRcode

效果圖如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章