SpringBoot使用Hutool生成二维码

Stella981
• 阅读 1110

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

效果图如下:

SpringBoot使用Hutool生成二维码

(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

效果图如下:

SpringBoot使用Hutool生成二维码

(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

效果图如下:

SpringBoot使用Hutool生成二维码

(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

效果图如下:

SpringBoot使用Hutool生成二维码

(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

效果图如下:

SpringBoot使用Hutool生成二维码

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
SpringBoot使用Hutool发送邮件
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。官方地址:https://hutool.cn/docs//(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fhut
Wesley13 Wesley13
3年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Easter79 Easter79
3年前
SpringBoot使用Hutool发送邮件
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。官方地址:https://hutool.cn/docs//(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fhut
Easter79 Easter79
3年前
SpringBoot使用Hutool生成二维码
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。官方地址:https://hutool.cn/docs//(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fhut
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这