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

在Spring Boot中使用ZXing開源庫生成帶有Logo的二維碼

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

在上一篇文章的基礎(chǔ)上,我們將進一步擴展功能,實現(xiàn)在生成的二維碼中嵌入Logo圖片。這樣的二維碼更具個性化和識別度。讓我們逐步完成這個功能。

第一步:引入Logo圖片

首先,準備一張用作Logo的圖片,并確保它的大小適中。將Logo圖片放置在項目的資源文件夾中,例如src/main/resources。

第二步:修改生成服務

QRCodeService中添加新的方法,用于在生成二維碼時添加Logo:

@Service
public class QRCodeService {
    @Value("${logo.path}")
    private String logoPath;

    // 定義一個名為generateQRCode的公共方法,它接收三個參數(shù):content(字符串類型,表示二維碼的內(nèi)容)、width(整數(shù)類型,表示二維碼的寬度)和height(整數(shù)類型,表示二維碼的高度)。
    public byte[] generateQRCode(String content, int width, int height) {
        try {
            // 創(chuàng)建一個名為hints的HashMap對象,用于存儲二維碼編碼的提示信息。
            Map<EncodeHintType, Object> hints = new HashMap<>();
            // 設(shè)置錯誤糾正級別為L,表示較低的糾錯能力。
            hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
            // 設(shè)置邊距為2,即二維碼邊緣與內(nèi)容之間的距離為2個像素。
            hints.put(EncodeHintType.MARGIN, 2);
            // 設(shè)置字符集為UTF-8,表示二維碼支持UTF-8編碼的字符。
            hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");

            // 創(chuàng)建一個QRCodeWriter對象,用于生成二維碼。
            QRCodeWriter qrCodeWriter = new QRCodeWriter();
            // 使用QRCodeWriter對象將內(nèi)容編碼為二維碼,并指定寬度、高度和提示信息。
            BitMatrix bitMatrix = qrCodeWriter.encode(content, BarcodeFormat.QR_CODE, width, height, hints);

            // 將BitMatrix對象轉(zhuǎn)換為BufferedImage對象,以便于后續(xù)處理。
            BufferedImage bufferedImage = MatrixToImageWriter.toBufferedImage(bitMatrix);
            // 創(chuàng)建一個ByteArrayOutputStream對象,用于將BufferedImage對象轉(zhuǎn)換為字節(jié)數(shù)組。
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            // 將BufferedImage對象寫入到ByteArrayOutputStream對象中,并指定輸出格式為png。
            ImageIO.write(bufferedImage, "png", byteArrayOutputStream);

            // 將ByteArrayOutputStream對象中的數(shù)據(jù)轉(zhuǎn)換為字節(jié)數(shù)組,并返回該字節(jié)數(shù)組。
            return byteArrayOutputStream.toByteArray();
        } catch (Exception e) {
            // 如果在生成二維碼過程中出現(xiàn)異常,則打印異常信息。
            e.printStackTrace();
            // 返回空字節(jié)數(shù)組。
            return null;
        }
    }

    /**
     * 生成帶有Logo的二維碼
     *
     * @param content 二維碼的內(nèi)容
     * @param width 二維碼的寬度
     * @param height 二維碼的高度
     * @return 帶有Logo的二維碼的字節(jié)數(shù)組
     */
    public byte[] generateQRCodeWithLogo(String content, int width, int height) {
        try {
            // 調(diào)用方法生成二維碼的字節(jié)數(shù)組
            byte[] qrCodeBytes = generateQRCode(content, width, height);

            // 從字節(jié)數(shù)組中讀取二維碼圖像
            BufferedImage qrCodeImage = ImageIO.read(new ByteArrayInputStream(qrCodeBytes));
            System.out.println("logoPath"+logoPath);
            // 從指定路徑讀取Logo圖像
            BufferedImage logoImage = ImageIO.read(new File(logoPath));

            // 計算Logo的大小,使其適合二維碼的大小
            int logoWidth = qrCodeImage.getWidth() / 5;
            int logoHeight = qrCodeImage.getHeight() / 5;

            // 計算Logo在二維碼上的位置,使其居中顯示
            int x = (qrCodeImage.getWidth() - logoWidth) / 2;
            int y = (qrCodeImage.getHeight() - logoHeight) / 2;

            // 在二維碼上繪制Logo圖像
            Graphics2D graphics = qrCodeImage.createGraphics();
            graphics.drawImage(logoImage, x, y, logoWidth, logoHeight, null);
            graphics.dispose();

            // 將帶有Logo的二維碼轉(zhuǎn)換為PNG格式的字節(jié)數(shù)組
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            ImageIO.write(qrCodeImage, "png", byteArrayOutputStream);

            // 返回帶有Logo的二維碼的字節(jié)數(shù)組
            return byteArrayOutputStream.toByteArray();
        } catch (IOException e) {
            // 打印異常堆棧信息
            e.printStackTrace();
            // 返回空字節(jié)數(shù)組(表示失?。?/span>
            return null;
        }
    }
}

在上述代碼中,我們添加了generateQRCodeWithLogo方法,該方法先調(diào)用generateQRCode生成普通二維碼,然后在其基礎(chǔ)上添加Logo。Logo的位置在二維碼中央,大小為二維碼的五分之一。

第三步:更新Controller

在Controller中調(diào)用新添加的方法,生成帶有Logo的二維碼:

@RestController
public class QRCodeController {

    @Autowired
    private QRCodeService qrCodeService;

    // 使用@GetMapping注解,表示這是一個處理HTTP GET請求的方法。
    // value屬性指定了該方法對應的URL路徑為"/generateQRCode"。
    // produces屬性指定了該方法返回的數(shù)據(jù)類型,即PNG格式的圖片。
    @GetMapping(value = "/generateQRCode", produces = MediaType.IMAGE_PNG_VALUE)
    public byte[] generateQRCode(@RequestParam String content,
                                 @RequestParam(defaultValue = "200") int width,
                                 @RequestParam(defaultValue = "200") int height) {
        // 調(diào)用qrCodeService的generateQRCode方法來生成二維碼。
        // 傳入二維碼的內(nèi)容、寬度和高度作為參數(shù)。
        return qrCodeService.generateQRCode(content, width, height);
    }

    /**
     * 生成帶有Logo的二維碼的API接口
     *
     * @GetMapping 注解表示這是一個處理HTTP GET請求的方法,并映射到"/generateQRCodeWithLogo"路徑。
     * @RequestParam 注解用于從請求中獲取參數(shù)。
     * @RequestParam(defaultValue = "200") 表示如果請求中沒有提供該參數(shù),則使用默認值"200"。
     * @Produces 注解指定此方法將產(chǎn)生或接受的媒體類型為"image/png"。
     *
     * @param content 二維碼的內(nèi)容,將從請求中獲取。
     * @param width 二維碼的寬度,將從請求中獲取,默認為200。
     * @param height 二維碼的高度,將從請求中獲取,默認為200。
     *
     * @return 返回生成的帶有Logo的二維碼的字節(jié)數(shù)組。
     */

    @GetMapping(value = "/generateQRCodeWithLogo", produces = MediaType.IMAGE_PNG_VALUE)
    public byte[] generateQRCodeWithLogo(@RequestParam String content,
                                         @RequestParam(defaultValue = "200") int width,
                                         @RequestParam(defaultValue = "200") int height) {
        return qrCodeService.generateQRCodeWithLogo(content, width, height);
    }
}

我們在Controller中添加了新的接口/generateQRCodeWithLogo,該接口調(diào)用generateQRCodeWithLogo方法生成帶有Logo的二維碼。

第四步:配置Logo路徑

application.propertiesapplication.yml中添加Logo路徑的配置:

logo.path=classpath:logo.png

第五步:測試

在Spring Boot中使用ZXing開源庫生成帶有Logo的二維碼,spring boot,后端,java

通過以上步驟,你已經(jīng)成功地在Spring Boot項目中使用ZXing生成帶有Logo的二維碼。這樣的二維碼更具有品牌特色,也更易于用戶識別。希望這篇博文對你有所幫助。文章來源地址http://www.zghlxwxcb.cn/news/detail-820384.html

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

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

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

相關(guān)文章

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

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

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

    2024年02月04日
    瀏覽(20)
  • Vue中兩種生成二維碼(帶logo)并下載方式

    ????????生成的二維碼需要顯示logo,并且點擊可以二維碼可以下載保存,有兩種方案供選擇( vue-qr、qrcode ) 我的nodejs版本12.13.0,大家可以使用cnpm下載更好。 html代碼: JS代碼: text 是要生成的內(nèi)容 size 表示二維碼的寬高,寬高一致 margin 二維碼圖像的外邊距, 默認 20px

    2024年02月01日
    瀏覽(26)
  • 生成小程序的二維碼的base64碼(中間logo可以自定義)

    加入以下代碼: 完整代碼: ?

    2024年02月05日
    瀏覽(98)
  • 微信小程序生成二維碼(weapp-qrcode)可添加logo

    插件 npm 地址:https://www.npmjs.com/package/weapp-qrcode 插件 GitHub 地址:https://github.com/yingye/weapp-qrcode/tree/master 一、引入 1、根據(jù) GitHub 指引將 weapp-qrcode 放到本地 uitl 文件夾下; 2、創(chuàng)建 canvas 3、在 js 文件中引入 weapp-qrcode 以及使用; 這里是添加了 logo 的二維碼;相關(guān)參數(shù)請參考

    2024年02月15日
    瀏覽(23)
  • vue:生成二維碼 qrcode、vue-qr(二維碼中間可帶logo)

    vue:生成二維碼 qrcode、vue-qr(二維碼中間可帶logo)

    一、方法一 qrcode qrcode - npm 1.1、安裝 yarn add qrcode 1.2、頁面引入 1.3、方法里邊使用 ?二維碼url: ???????? 1.4、options 名稱 類型 默認值 說明 errorCorrectionLevel String M 錯誤處理級別??蛇x值: low ,? medium ,? quartile ,? high ?or? L ,? M ,? Q ,? H maskPattern Number 可選值: 0 ,?

    2023年04月12日
    瀏覽(29)
  • 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)
  • Vue中使用qrcode實現(xiàn)渲染二維碼中間添加自定義logo-demo

    Vue中使用qrcode實現(xiàn)渲染二維碼中間添加自定義logo-demo

    我們首先創(chuàng)建一個新的 canvas 元素,用于容納生成的二維碼。然后,使用 QRCode.toCanvas 方法將二維碼生成到新的 canvas 元素中。 接下來,在 logo.onload 事件處理程序中,我們創(chuàng)建一個 Image 對象來加載logo圖像,并在二維碼中間繪制logo。最后,將生成的二維碼轉(zhuǎn)換為數(shù)據(jù)URL,并將

    2024年02月10日
    瀏覽(41)
  • 帶有 Spring Boot 后端的 Vue.js 前端

    概述 在開始本教程中,先推薦1個SpringBoot+Vue前后端分離Java項目,本項目是一個大型互聯(lián)網(wǎng)金融項目,采用Spring Boot , Dubbo 微服務的架構(gòu),包括多個獨立的微服務,micr-common個公共服務,micr-web服務,micr-database數(shù)據(jù)庫服務,micr-pay支付服務 ,micr-task定時任務。 前端技術(shù)棧:Vue,

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

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

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

    2024年03月09日
    瀏覽(33)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包