欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實現(xiàn)二維碼生成功能詳細示例

 更新時間:2023年07月25日 11:28:57   作者:流浪者13號  
這篇文章主要給大家介紹了關于java實現(xiàn)二維碼生成功能的相關資料,隨著信息化時代的到來,二維碼作為一種信息傳遞的工具,越來越受到人們的歡迎,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

1、由來:

由于現(xiàn)在對二維碼的使用比較多,正好我在項目里面也使用到了,所以寫篇博客記錄一下。

2、引入依賴:

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

3、生成二維碼

這里我是將我博客主頁的url生成二維碼,微信掃一掃可以看到我的博客主頁(歡迎騷擾)

QrCodeUtil.generate("https://blog.csdn.net/liulangzhezhang?spm=1000.2115.3001.5343", 300, 300, FileUtil.file("D:\\QRCode\\qrcode.jpg"));

4、帶參數(shù)的

4.1、設置參數(shù)

上面這個只是簡單的生成二維碼,接下來說說自定義參數(shù)的方式生成,如長、寬、二維碼的顏色、背景顏色、邊距等參數(shù),下面是代碼和效果圖:

QrConfig config = new QrConfig(300, 300);
        // 設置邊距,既二維碼和背景之間的邊距
        config.setMargin(3);
        // 設置前景色,既二維碼顏色(青色)
        config.setForeColor(Color.CYAN.getRGB());
        // 設置背景色(灰色)
        config.setBackColor(Color.GRAY.getRGB());
        // 生成二維碼到文件,也可以到流
        QrCodeUtil.generate("https://blog.csdn.net/liulangzhezhang?spm=1000.2115.3001.5343", config, FileUtil.file("D:/qrcode.jpg"));

4.2、附帶logo小圖標

QrCodeUtil.generate(//
                "https://blog.csdn.net/liulangzhezhang?spm=1000.2115.3001.5343", //二維碼內容
                QrConfig.create().setImg("C:\\Users\\jlz\\Pictures\\Camera Roll\\zy.jpg"), //附帶logo
                FileUtil.file("D:\\excel\\QRCode\\qrcode.jpg")//寫出到的文件
        );

4.3、調整糾錯級別

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

    QrConfig config = new QrConfig();
        // 高糾錯級別
        config.setErrorCorrection(ErrorCorrectionLevel.H);
        QrCodeUtil.generate("https://blog.csdn.net/liulangzhezhang?spm=1000.2115.3001.5343", config, FileUtil.file("D:\\excel\\QRCode\\qrcode1.jpg"));

5、識別二維碼

String decode = QrCodeUtil.decode(FileUtil.file("D:\\excel\\QRCode\\qrcode.jpg"));

6、實際可用

在項目中我還加了生成二維碼名稱,是根據(jù)日期和時間生成的唯一名稱,這就解決了名稱可能重復的問題,下面是完整代碼:

package com.yang.zhang.QrCode;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.extra.qrcode.QrCodeUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.beans.factory.annotation.Value;
import java.io.File;
import java.util.Date;
/**
 * 二維碼生成
 *
 * @Author zhangzhongqing
 * @Date 2022/12/14 13:56
 */
@RestController
@RequestMapping("/qrCode")
@Api(tags = "二維碼生成")
public class QrCode {
    @Value("${file.local.filePath}")
    private String filePath;
    @PostMapping("/qrCode1")
    @ApiOperation(value="二維碼生成")
    public void QrCode() {
        //二維碼里面的信息
        String message = "https://blog.csdn.net/liulangzhezhang?spm=1000.2115.3001.5343" ;
        // 生成二維碼
        String picUrl = generateQRCode(message);
        System.out.println(picUrl);
    }
    // 生成二維碼并返回地址  message二維碼中內容,name文件名
    private String generateQRCode(String message) {
        String newFilePath = getUploadFilePath(".jpg");
        String localPath = filePath + "/" + "QRCode" + "/" + newFilePath;
        File newFile = new File(localPath);
        if (!newFile.getParentFile().exists()) {
            newFile.getParentFile().mkdirs();
        }
        // 生成二維碼
        QrCodeUtil.generate(message, 300, 300, FileUtil.file(localPath));
        return "/files" + newFilePath;
    }
    // 生成文件的路徑和文件名  如 jpg/2022-05-20/14_50_39_1.jpg
    private String getUploadFilePath(String suffix) {
        Date nowDate = new Date();
        String dateStr = DateUtil.formatDate(nowDate);
        String timeStr = DateUtil.format(nowDate, "HH_mm_ss");
        String newFilePath ="/" + dateStr + "/" + timeStr + suffix;
        return newFilePath;
    }
}

7、總結

這就是簡單的生成二維碼的方法,歡迎討論與指正?。?!

到此這篇關于java實現(xiàn)二維碼生成功能的文章就介紹到這了,更多相關java二維碼生成功能內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 基于SpringBoot+Avue實現(xiàn)短信通知功能

    基于SpringBoot+Avue實現(xiàn)短信通知功能

    Avue是基于vue和element-ui的快速開發(fā)框架 ,它的核心是數(shù)據(jù)驅動UI的思想,讓我們從繁瑣的crud開發(fā)中解脫出來,本文將給大家介紹一下使用SpringBoot+Avue實現(xiàn)短信通知功能,文中有詳細的代碼示例,需要的朋友可以參考下
    2023-09-09
  • java json 省市級聯(lián)實例代碼

    java json 省市級聯(lián)實例代碼

    這篇文章介紹了java json 省市級聯(lián)實例代碼,有需要的朋友可以參考一下
    2013-09-09
  • java郵件發(fā)送的實現(xiàn)

    java郵件發(fā)送的實現(xiàn)

    本篇是用于java來實現(xiàn)郵件的發(fā)送的實例代碼,基于smtp服務,有需要的可以參考一下。
    2016-10-10
  • java并發(fā)編程之深入理解Synchronized的使用

    java并發(fā)編程之深入理解Synchronized的使用

    文詳細講述了線程、進程的關系及在操作系統(tǒng)中的表現(xiàn),這是多線程學習必須了解的基礎。本文將接著講一下Java線程同步中的一個重要的概念synchronized,希望能夠給你有所幫助
    2021-06-06
  • 深入學習java枚舉的應用

    深入學習java枚舉的應用

    本篇是關于java深入提高學習的相關知識,介紹了枚舉的應用等方面內容,有興趣的朋友參考學習下吧。
    2018-01-01
  • 在Java中FreeMarker?模板來定義字符串模板

    在Java中FreeMarker?模板來定義字符串模板

    這篇文章主要介紹了在Java中FreeMarker?模板來定義字符串模板,文章基于Java的相關資料展開詳細內容,需要的小伙伴可以參考一下
    2022-04-04
  • Spring注解方式無法掃描Service注解的解決

    Spring注解方式無法掃描Service注解的解決

    這篇文章主要介紹了Spring注解方式無法掃描Service注解的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 攔截器獲取request的值之后,Controller拿不到值的解決

    攔截器獲取request的值之后,Controller拿不到值的解決

    這篇文章主要介紹了攔截器獲取request的值之后,Controller拿不到值的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • SpringBoot如何使用自定義注解實現(xiàn)接口限流

    SpringBoot如何使用自定義注解實現(xiàn)接口限流

    這篇文章主要介紹了SpringBoot如何使用自定義注解實現(xiàn)接口限流,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 關于SpringBoot的自動裝配原理詳解

    關于SpringBoot的自動裝配原理詳解

    這篇文章主要介紹了關于SpringBoot的自動裝配原理詳解,Spring?Boot自動裝配原理是指Spring?Boot在啟動時自動掃描項目中的依賴關系,根據(jù)依賴關系自動配置相應的Bean,從而簡化了Spring應用的配置過程,需要的朋友可以參考下
    2023-07-07

最新評論