SpringBoot 使用Hutool生成二维码

原创
2020/12/11 10:38
阅读数 1.4W

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

效果图如下:

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部