国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringBoot使用Zxing生成二維碼

這篇具有很好參考價值的文章主要介紹了SpringBoot使用Zxing生成二維碼。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

什么是Zxing

ZXing,一個支持在圖像中解碼和生成條形碼(如二維碼、PDF 417、EAN、UPC、Aztec、Data Matrix、Codabar)的庫。ZXing(“zebra crossing”)是一個開源的、多格式的、用Java實現(xiàn)的一維/二維條碼圖像處理庫,具有到其他語言的端口。

具體實現(xiàn)

對于在Spring項目中使用Zxing生成二維碼,其實比較簡單,只需要引入依賴,然后調(diào)用方法,并傳入需要的參數(shù)即可。
最核心的代碼就是
QRCodeWriter qrCodeWriter=new QRCodeWriter(); bitMatrix=qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height, hints);
text :二維碼中攜帶的內(nèi)容
BarcodeFormat.QR_CODE :是一個枚舉值,表示二維碼(Quick Response Code)格式
width: 寬
height: 高
hints: 是一個map,包含一些其他的設(shè)置內(nèi)容

1. 在pom文件中導(dǎo)入依賴

		<!-- ZXing二維碼 -->
		<dependency>
			<groupId>com.google.zxing</groupId>
			<artifactId>core</artifactId>
			<version>3.4.1</version> 
		</dependency>
		<dependency>
			<groupId>com.google.zxing</groupId>
			<artifactId>javase</artifactId>
			<version>3.4.1</version>
		</dependency>

2. 二維碼生成工具類

生成的二維碼可以輸出到本地文件中,也可以直接以IO流的形式返回給前端,前端再進(jìn)行二維碼的顯示。

package com.lixy.sharingcurriculum.util;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
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 com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.util.HashMap;

public class QRCodeGenerator {

    /**
     * 生成二維碼輸出文件
     * @param text
     * @throws WriterException
     * @throws IOException
     */
    public static void generateQRCodeImage(String text) throws WriterException, IOException {

        int width = 350;
        int height = 350;
        String filePath = "C:/Users/li/Pictures/qrtest.png";

        // 定義二維碼的參數(shù)
        HashMap<EncodeHintType, ErrorCorrectionLevel> hintMap = new HashMap<>();
        hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M); 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);
    }

    /**
     * 生成二維碼并以IO流返回
     * @param text
     * @return
     * @throws WriterException
     */
    public static BitMatrix createQRCode(String text) throws IOException {

        int width=200;
        int height=200;

        HashMap<EncodeHintType,Object> hints = new HashMap<>();
        hints.put(EncodeHintType.CHARACTER_SET,"UTF-8"); //指定字符編碼為“utf-8”
        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L); //指定二維碼的糾錯等級為中級
        hints.put(EncodeHintType.MARGIN, 2); //設(shè)置圖片的邊距,單位像素,非負(fù)值

        BitMatrix bitMatrix=null;

        try{
            QRCodeWriter qrCodeWriter=new QRCodeWriter();
            bitMatrix=qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height, hints);
        }catch (WriterException e){
            e.printStackTrace();
        }

        return bitMatrix;
    }

    public static void main(String[] args) {
        try {
            generateQRCodeImage("code");
        } catch (WriterException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3. 控制層和服務(wù)層

/**
     * 生成帶有課程表信息的二維碼
     */
    @PostMapping("/generateQRCode")
    public void generateQRCode(String scheduleid,HttpServletResponse response) throws IOException {
        //設(shè)置響應(yīng)流信息
        response.setContentType("image/png");
        //沒有緩存
        response.setHeader("Pragma", "No-cache");
        response.setHeader("Cache-Control", "no-cache");
        //設(shè)置過期的時間戳,為0表示立即過期
        response.setDateHeader("Expire", 0);

        BitMatrix bitMatrix=scheduleService.generateQRCode(scheduleid);

        OutputStream stream=response.getOutputStream();
        MatrixToImageWriter.writeToStream(bitMatrix,"png",stream);

    }
/**
     * 生成帶有課程表信息的二維碼
     * @return
     */
    @Override
    public BitMatrix generateQRCode(String scheduleid) throws IOException {

        Schedule schedule=scheduleMapper.selectById(scheduleid);

        //將課表信息轉(zhuǎn)換為json格式
        String scheduleJson= JSON.toJSONString(schedule);
        return QRCodeGenerator.createQRCode(scheduleJson);

    }

4. 前端

wx.request({
      url: 'http://localhost:8080/schedule/generateQRCode?scheduleid='+this.data.id,
      method:'POST',
      responseType: 'arraybuffer', // 指定返回類型為ArrayBuffer
      success:res=>{
        const base64=wx.arrayBufferToBase64(res.data);
        const imagesrc='data:image/png;base64,'+base64;
        console.log("二維碼url:"+imagesrc)
        this.setData({
          qrCodeImg:imagesrc
        })
      }
    })

		<view>
			掃描二維碼即可導(dǎo)入課表
		</view>
		<image src="{{qrCodeImg}}" mode="aspectFit"/>  

總結(jié)

另外還可以使用一些其他的方式生成二維碼,比如基于開源的Hutool工具生成二維碼,可以參考SpringBoot系列(22):Java生成二維碼的幾種實現(xiàn)方式(基于Spring Boot)
也可以直接使用js生成,有QRCode.js庫可以直接引用。

參考

使用Zxing生成二維碼
Java生成二維碼并以IO流的形式返回給前端展示(不需寫入服務(wù)器),以及下載二維碼圖片文章來源地址http://www.zghlxwxcb.cn/news/detail-850917.html

到了這里,關(guān)于SpringBoot使用Zxing生成二維碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 二維碼生成解析用ZXing.NET就夠了,不要再引一堆生成和解析庫了

    二維碼生成解析用ZXing.NET就夠了,不要再引一堆生成和解析庫了

    ZXing.NET 是一個開源的、功能強大的二維碼處理庫,它能夠?qū)ΧS碼進(jìn)行解碼(讀取信息)和編碼(生成二維碼)。ZXing 是 \\\"Zebra Crossing\\\" 的縮寫,是一個跨平臺的、用于解碼和生成條形碼和二維碼的庫。以下是一些 ZXing.Net 的主要功能通過實例講解。 這些示例演示了 ZXing.Net 的

    2024年02月04日
    瀏覽(20)
  • 【支付系統(tǒng)】java springboot 生成二維碼,二維碼中文亂碼

    【支付系統(tǒng)】java springboot 生成二維碼,二維碼中文亂碼

    ? ? ? ? 支付系統(tǒng)必不可少的就是生成二維碼,有時我們會需要將支付鏈接轉(zhuǎn)換為二維碼.用戶通過移動設(shè)備掃描二維碼調(diào)起支付. 該篇文章主要使用的是hutool自帶的二維碼生成功能. ?1. 引入依賴(hutool 可以按需引入這里就直接使用all了) 2. hutool的官方已經(jīng)有很詳細(xì)的生成方式

    2024年02月11日
    瀏覽(32)
  • Android之 Zxing二維碼詳解

    Android之 Zxing二維碼詳解

    一 簡介 1.1 ZXing 目前Android掃描二維碼,條形碼主要用google官方的工具Zxing,支持掃碼,相冊解碼,生成帶logo的二維碼等功能? Zxing github 示例地址:https://github.com/zxing/zxing 1.2?ZBar 由于zxing是基于java編寫的,掃碼速度和解析上可能沒那么快,但大部分場合足夠用。也有基于c/

    2024年02月08日
    瀏覽(28)
  • zxing二維碼位矩陣轉(zhuǎn)換成Bitmap位圖

    ZXing是一個開放源碼的,用Java實現(xiàn)的多種格式的1D/2D條碼圖像處理庫,它包含了聯(lián)系到其他語言的端口。Zxing可以實現(xiàn)使用手機的內(nèi)置的攝像頭完成條形碼的掃描及解碼。 該項目可實現(xiàn)的條形碼編碼和解碼。我們支持以下格式: UPC-A,UPC-E EAN-8,EAN-13 39碼 93碼 代碼128 創(chuàng)新及科

    2023年04月11日
    瀏覽(27)
  • Java便捷生成二維碼并使用Excel

    第一步生成圖片字節(jié)數(shù)組輸出流 第二步字節(jié)數(shù)組輸出流存入excel 使用的是easyexcel和hutool工具便捷快速開發(fā) 導(dǎo)出類信息 @ContentRowHeight(100) @ColumnWidth(100/6) 這兩個注解是條件excel行列大小,可以自行調(diào)整 EasyExcel 會根據(jù)這個實體類來生成表格,可以去官網(wǎng)查看注解注釋掉其中的某

    2024年02月09日
    瀏覽(19)
  • C#中輕松實現(xiàn)二維碼和條形碼識別:OpenCvSharp和ZXing詳細(xì)教程

    C#中輕松實現(xiàn)二維碼和條形碼識別:OpenCvSharp和ZXing詳細(xì)教程

    ? 概述: 本教程使用OpenCvSharp和ZXing庫,詳細(xì)介紹了在C#中識別二維碼和條形碼的步驟。通過導(dǎo)入必要的命名空間、加載圖像,并使用ZXing庫進(jìn)行二維碼和條形碼的識別,提供了清晰的示例代碼。這方便了開發(fā)人員在項目中集成二維碼和條形碼識別功能。 要使用OpenCvSharp來分別

    2024年03月09日
    瀏覽(33)
  • java實現(xiàn)二維碼生成功能

    java實現(xiàn)二維碼生成功能

    由于現(xiàn)在對二維碼的使用比較多,正好我在項目里面也使用到了,所以寫篇博客記錄一下。 這里我是將我博客主頁的url生成二維碼,微信掃一掃可以看到我的博客主頁(歡迎騷擾) 4.1、設(shè)置參數(shù) 上面這個只是簡單的生成二維碼,接下來說說自定義參數(shù)的方式生成,如長、寬

    2024年02月11日
    瀏覽(22)
  • Java生成二維碼——附Utils工具類

    Java生成二維碼——附Utils工具類

    參加2023年的計算機設(shè)計大賽國賽,拿到了一等獎。 現(xiàn)在將項目中的工具類代碼剝離出來,方便之后項目開發(fā)中復(fù)用。

    2024年02月15日
    瀏覽(22)
  • java生成、識別條形碼和二維碼

    java生成、識別條形碼和二維碼

    使用 zxing 開源庫 Zxing主要是Google出品的,用于識別一維碼和二維碼的第三方庫 主要類: BitMatrix 位圖矩陣 MultiFormatWriter 位圖編寫器 MatrixToImageWriter 寫入圖片 可以生成、識別條形碼和二維碼 內(nèi)置三種尺寸: enum Size {SMALL, MIDDLE, BIG} 依賴 將寬度不等的多個黑條和白條,按照一定

    2024年02月08日
    瀏覽(26)
  • Java生成二維碼(前后端分離項目實戰(zhàn))

    ?? 本文代碼已放置 github:Mr-Write/SpringbootDemo: 各種demo案例 (github.com) ZXing(Zebra Crossing)是一個開源的條碼掃描和生成庫,用于讀取和生成各種類型的條碼和二維碼。它由 Google 開發(fā)并發(fā)布,目前由一群開源社區(qū)維護(hù)。 ZXing 支持多種常見的條碼格式,包括一維條碼(如EAN-13、

    2024年02月10日
    瀏覽(82)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包