vue-qr生成的二維碼增加下載功能

大家好!今天給大家分享一個超實用的前端小技巧——如何在 Vue 項目中生成二維碼并實現下載功能。這個功能在分享鏈接、活動推廣等場景特別有用,一起來學習吧!
🔍 功能預覽

  • 使用 vue-qr 生成美觀二維碼
  • 點擊按鈕即可下載 PNG 格式的二維碼
  • 兼容現代瀏覽器,響應式設計
    🛠? 所需依賴
    首先確保安裝這兩個關鍵庫:
npm install vue-qr file-saver --save
# 或
yarn add vue-qr file-saver

核心代碼實現

  1. 組件引入
import VueQr from 'vue-qr';
import { saveAs } from 'file-saver'; // 文件下載神器
  1. 模板部分 - 二維碼展示區
<template><div class="qr-container"><!-- 二維碼生成組件 --><vue-qr:text="qrContent":size="200":margin="10":callback="getCodeUrl"></vue-qr><!-- 下載按鈕 --><button @click="downloadQr" class="download-btn">下載二維碼</button></div>
</template>
  1. 腳本部分 - 核心邏輯
<script>
export default {data() {return {qrContent: 'https://example.com', // 默認二維碼內容qrBlob: null,    // 存儲二維碼二進制數據fileName: '我的二維碼.png' // 默認文件名}},methods: {// 二維碼生成回調getCodeUrl(dataURL) {// 移除Base64前綴const base64Data = dataURL.replace(/^data:image\/\w+;base64,/, '');// 轉換Base64為二進制數據const byteArray = Uint8Array.from(atob(base64Data), c => c.charCodeAt(0));// 創建Blob對象this.qrBlob = new Blob([byteArray], { type: 'image/png' });},// 下載二維碼downloadQr() {if (!this.qrBlob) {alert('請先生成二維碼!');return;}// 使用file-saver保存文件saveAs(this.qrBlob, this.fileName);// 可以添加下載統計等擴展功能this.trackDownload();},// 擴展:下載統計trackDownload() {console.log('二維碼下載次數+1');// 這里可以接入埋點統計}}
}
</script>

🚨 常見問題解決
Q1:為什么下載的文件損壞?
A:確保正確處理了Base64數據轉換,特別注意替換前綴的正則表達式要準確。

Q2:如何在移動端兼容?
A:file-saver 在移動端可能有兼容性問題,可以添加提示:

downloadQr() {if (/Android|iPhone/i.test(navigator.userAgent)) {alert('長按圖片即可保存到相冊');return;}// ...原有下載邏輯
}

Q3:如何提高生成速度?
A:對于大量二維碼生成,可以考慮使用Web Worker進行異步處理。
Q4:對于下載的圖片有尺寸要求怎么辦?
A:修改getCodeUrl,使用canvas轉blob

    getCodeUrl(url, id) {const canvas = document.createElement("canvas");const img = new Image();img.src = url;img.onload = () => {canvas.width = 800;canvas.height = 800;const ctx = canvas.getContext("2d");ctx.drawImage(img, 0, 0, 800, 800);canvas.toBlob((blob) => {this.codeBlob = blob;}, "image/png");};},

如果有任何問題,歡迎在評論區留言討論~ 😊

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/82053.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82053.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/82053.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

嵌入式C進階路線指南

嵌入式是工科&#xff0c;工科講究實踐。說的再多、懂得再多&#xff0c;不能做出實際的東西&#xff0c;是沒有意義的。學習嵌入式的核心原則之一就是多動手寫代碼。另外還有一個原則就是&#xff1a;從淺到深學習。接下來的內容將貫徹這兩個原則。最后強調一點&#xff0c;各…

服務器上機用到的設備

服務器上機通常需要以下硬件設備&#xff1a; 服務器主機&#xff1a; CPU&#xff1a;選擇高性能的多核處理器&#xff0c;如英特爾至強&#xff08;Xeon&#xff09;系列或AMD EPYC系列&#xff0c;以滿足高并發和多任務處理需求。 內存&#xff08;RAM&#xff09;&#xf…

FreeCAD傻瓜教程-渦輪蝸桿的快速繪制FCGear工作臺的使用方法

起因&#xff1a;渦輪蝸軸的組合&#xff0c;是一種比較簡單且高效的傳動結構。可以實現減速、加速、轉動角度的放大、縮小等應用。 如何繪制呢&#xff1f;我搜索了不少教程&#xff0c;看起來都挺復雜的&#xff0c;對于小白來說有點像天書。這里介紹和記錄一下利用FreeCAD 的…

daplink開發_一次開發DAPLink的詳細開發流程及調試步驟

以下是針對第一次開發DAPLink的詳細開發流程及調試步驟,結合STM32平臺特性,分階段指導您完成從零到一的完整開發過程: 一、開發流程1. 硬件準備階段選型STM32芯片:推薦型號:STM32F103C8T6(成本低、資源足夠)、STM32F405RGT6(性能更強,支持更多外設)。關鍵外設需求:U…

給小白的AI Agent 基本技術點分析與講解

引言&#xff1a;重塑交互與自動化邊界的 AI Agent 在人工智能技術飛速發展的浪潮中&#xff0c;AI Agent&#xff08;智能體&#xff09;概念的興起標志著自動化和人機交互正邁向一個全新的階段。傳統的軟件系統通常被設計來執行精確預設的指令序列&#xff0c;它們強大且高效…

Mysql常用語句匯總

Mysql語句分類 DDL: 數據定義語言&#xff0c;用來定義數據庫對象&#xff08;數據庫、表、字段&#xff09;DML: 數據操作語言&#xff0c;用來對數據庫表中的數據進行增刪改DQL: 數據查詢語言&#xff0c;用來查詢數據庫中表的記錄DCL: 數據控制語言&#xff0c;用來創建數據…

【Python 模塊】

Python 中的模塊&#xff08;Module&#xff09;是組織代碼的核心方式&#xff0c;通過將相關函數、類和變量封裝到獨立文件中&#xff0c;實現代碼復用和結構化管理。以下是模塊的核心知識點&#xff1a; 一、基礎概念 1. 模塊定義 任何 .py 文件都是一個模塊模塊名即文件名…

黑電平校正(Black Level Correction, BLC)算法

黑電平校正&#xff08;Black Level Correction, BLC&#xff09;算法 黑電平校正&#xff08;BLC&#xff09;是圖像傳感器&#xff08;如CMOS/CCD&#xff09;信號處理中的一個重要步驟&#xff0c;主要用于消除傳感器暗電流&#xff08;Dark Current&#xff09;導致的基線…

處理PostgreSQL數據庫事務死鎖過程

查詢pg_locks表&#xff0c;獲取未得到滿足的鎖信息&#xff1a; select * from pg_locks where granted is false ; --查詢得不到鎖的&#xff0c;那就是兩個互相等待對方持有的鎖查詢活動的事務會話進程&#xff0c;和上一步的鎖的事務對應起來&#xff1a; select * from …

Android開發-文本顯示

在Android應用開發中&#xff0c;文本顯示是用戶界面設計中最基本也是最重要的部分之一。無論是展示歡迎信息、錯誤提示還是動態內容&#xff0c;合理地使用文本元素能夠極大地提升用戶體驗。本文將詳細介紹如何在Android應用中有效地顯示文本&#xff0c;包括使用TextView組件…

基于大模型的輸卵管妊娠全流程預測與治療方案研究報告

一、引言 1.1 研究背景與意義 輸卵管妊娠作為異位妊娠中最為常見的類型,嚴重威脅著女性的生殖健康和生命安全。受精卵在輸卵管內著床發育,隨著胚胎的生長,輸卵管無法提供足夠的空間和營養支持,極易引發輸卵管破裂、大出血等嚴重并發癥,若救治不及時,甚至會導致孕產婦死…

當向量數據庫與云計算相遇:AI應用全面提速

如果將AI比作一臺高速運轉的機器引擎&#xff0c;那么數據便是它的燃料。 然而&#xff0c;存儲數據的燃料庫--傳統數據庫&#xff0c;在AI時代的效率瓶頸愈發明顯&#xff0c;已經無法滿足AI對于數據的全新需求。 因此&#xff0c;向量數據庫近年來迅速崛起。向量數據庫通過…

Media3 中 Window 的時間相關屬性詳解

AndroidX Media3 的 Timeline.Window 類中&#xff0c;與時間相關的屬性描述了媒體播放窗口&#xff08;window&#xff09;在時間維度上的關鍵信息。這些屬性幫助開發者理解媒體的播放范圍、起始點、持續時間以及與設備時間或直播流的同步關系。 Timeline.Window 的時間相關屬…

【Python爬蟲電商數據采集+數據分析】采集電商平臺數據信息,并做可視化演示

前言 隨著電商平臺的興起&#xff0c;越來越多的人開始在網上購物。而對于電商平臺來說&#xff0c;商品信息、價格、評論等數據是非常重要的。因此&#xff0c;抓取電商平臺的商品信息、價格、評論等數據成為了一項非常有價值的工作。本文將介紹如何使用Python編寫爬蟲程序&a…

工業相機的芯片CRA角度與鏡頭選型的匹配關系

工業相機的芯片CRA角度與鏡頭選型的匹配關系 Baumer工業相機?工業相機的芯片CRA角度的技術背景?工業相機的芯片CRA的信息CRA相差過大的具體表現怎樣選擇工業相機sensor的CRABaumer工業相機sensor的CRA工業相機的芯片CRA角度與鏡頭匹配好的優點 Baumer工業相機 工業相機是常用…

深度學習中常見的矩陣變換函數匯總(持續更新...)

1. 轉置操作 (Transpose) 概念&#xff1a;將矩陣的行和列互換應用場景&#xff1a; 在卷積神經網絡中轉換特征圖維度矩陣乘法運算前的維度調整數據預處理過程中的特征重排 原始矩陣 A [[1, 2, 3], 轉置后 A^T [[1, 4],[4, 5, 6]] [2, 5],[3, 6]]代碼…

day 14 SHAP可視化

一、原理——合作博弈論 SHAP&#xff08;SHapley Additive exPlanations&#xff09;是一種用于解釋機器學習模型預測結果的方法&#xff0c;它基于合作博弈論中的 Shapley 值概念。Shapley 值最初用于解決合作博弈中的利益分配問題。假設有 n 個參與者共同合作完成一項任務并…

從0開始學習大模型--Day03--Agent規劃與記憶

規劃&#xff08;planning&#xff09; 規劃&#xff0c;可以為理解觀察和思考。如果用人類來類比&#xff0c;當我們接到一個任務&#xff0c;我們的思維模式可能會像下面這樣: 1、首先會思考怎么完成這個任務。 2、然后會審視手頭上所擁有的工具&#xff0c;以及如何使用這…

使用 Couchbase Analytics Service 的典型步驟

下面是使用 Couchbase Analytics Service 的典型步驟&#xff0c;包括部署、配置、創建數據集、運行查詢以及監控優化等環節。 首先&#xff0c;您需要安裝并啟用 Analytics 服務&#xff1b;然后將節點加入集群并重平衡&#xff1b;接著在 Analytics 中映射數據服務的集合&am…

從零開始學習人工智能(Python高級教程)Day6-Python3 正則表達式

一、Python3 正則表達式 正則表達式是一個特殊的字符序列&#xff0c;它能幫助你方便的檢查一個字符串是否與某種模式匹配。 在 Python 中&#xff0c;使用 re 模塊來處理正則表達式。 re 模塊提供了一組函數&#xff0c;允許你在字符串中進行模式匹配、搜索和替換操作。 r…