vue在移動(dòng)端怎么動(dòng)態(tài)生成二維碼并實(shí)現(xiàn)長按保存圖片?

? 最近在做一個(gè)移動(dòng)端的項(xiàng)目,里邊有一個(gè)需求是生成鏈接并且同時(shí)把鏈接轉(zhuǎn)換成二維碼的需求,效果圖如下:

涉及到隱私,打個(gè)碼

因?yàn)橛玫氖莢ue框架,而且是第一次做這中需求的東西,于是果斷百度了一波,出來了一堆 什么qrcodejs2各種各樣的,一幫人抄來抄去,能不能親自試完了再抄?。亢ξ野€(gè)爬坑。這里就給大家分享幾個(gè)簡(jiǎn)單易懂用起來得勁的!

如果你的項(xiàng)目需求單純的只是需要將鏈接轉(zhuǎn)換成二維碼的話,這里比較好用的推薦?"@xkeshi/vue-qrcode"插件;

用法如下:

第一步:安裝@xkeshi/vue-qrcode.js包

npm install --save @xkeshi/vue-qrcode? ? ? //安裝到生產(chǎn)環(huán)境

第二步:組件中使用

template

<div class="qrcodeBox">

? ? ? ? ?<qrcode? :value="xxx" v-if="xxx"></qrcode>?

? ? ? ? ?<!--? v-if="xxx"是為了防止鏈接沒獲取到顯示空白,確保獲取到鏈接后才開始渲染 -->

</div>

script

import Qrcode from "@xkeshi/vue-qrcode";? ?//引入

data(){

? ? ?xxx:" "? ? ? ? ? ?//獲取到的鏈接

}

//注冊(cè)生成二維碼組件

components: {

? ? qrcode: Qrcode

? },

methods:{

}

這樣是不是很簡(jiǎn)單?只要xxx的轉(zhuǎn)換,二維碼就會(huì)自動(dòng)更新,不需要進(jìn)行過多的操作。

如果給你的需求不僅僅是生成二維碼這么簡(jiǎn)單,還需要在移動(dòng)端實(shí)現(xiàn)長按保存那么就得換另外一種了,下邊為大家來介紹qrcode.js;

QRCode.js

QRCode.js 是一個(gè)用于生成二維碼的 JavaScript 庫。主要是通過獲取 DOM 的標(biāo)簽,再通過 HTML5 Canvas 繪制而成,不依賴任何庫。

基本用法

html

<div id="qrcode"></div>

script

<script type="text/javascript">

? // 設(shè)置要生成二維碼的鏈接

? ? ? new QRCode(document.getElementById("qrcode"), "http://www.runoob.com");

</script>

或者使用一些可選參數(shù)設(shè)置:

var qrcode=new QRCode("qrcode",{

? ? ? text: "http://baidu.com",

? ? ? width:120,

? ? ? height:120,

? ? ? coloeDark:"#000000",

? ? ? coloeLight:"#ffffff",

? ? ? correctLevel:"QRCode.CorrectLevel.H"

? ?})

同樣我們可以使用以下方法:

qrcode.clear(); // 清除代碼

qrcode.makeCode("http://www.w3cschool.cc"); // 生成另外一個(gè)二維碼

瀏覽器支持

支持該庫的瀏覽器有:IE6~10, Chrome, Firefox, Safari, Opera, Mobile Safari, Android, Windows Mobile, 等,兼容性強(qiáng)。

那么在vue中怎么使用呢?

第一步:安裝qrcode.js包

npm install qrcode --save-dev

第二步:在vue中引入

import QRCode from 'qrcode';//如果有很多頁面使用的話可以在main中引入,掛載在全局;

template

<div id="code">

? ? ? ? ? ?<canvas id="canvas" ></canvas>

? </div>

script

? ?components:? {

? ? ? ? QRcode:QRCode? ? ?//注冊(cè)組件

? ? }

methods:{

? ? getUrl(xxx){

? ? ? ? var canvas=document.getElementById("canvas"); //獲取到canvas

? ? ? ? var code=document.getElementById("code");? ?//獲取到code容器

? ? ? ? QRCode.toCanvas(canvas,xxx, error=> {

? ? ? ? ? ? if (error) console.error(error);

? ? ? ? ? ? ?console.log("success!");

? ? ? ? ? ? ? });

? ? ? ? ? var image = new Image();? ? ?//實(shí)例一個(gè)img

? ? ? ? ? image.src = canvas.toDataURL("image/png");? //轉(zhuǎn)換成base64格式路徑的png圖片?

? ? ? ? ? image.style.width = "100%";? ? //設(shè)置樣式

? ? ? ? ? code.appendChild(image);? ? ?//添加到code 容器中

? ? ? ? ? canvas.style.display = "none";? ?//隱藏掉canvas??

? ?}

}

mounted(){

? ? ? var xxx="www.baidu.com";

? ? ? this.getUrl(xxx);

}

在這里用到的思路其實(shí)就是將鏈接先轉(zhuǎn)換成二維碼,然后再用canvas調(diào)用toDataURL()的方法得到以base64編碼的url,然后用img標(biāo)簽加載出來,至于為什么非得轉(zhuǎn)換成圖片呢?這就是利用了圖片在移動(dòng)端瀏覽器中或者微信中都是有自帶的長按響應(yīng)事件的,當(dāng)你長按對(duì)象是圖片的話就會(huì)提示你保存圖片,下附效果圖:

在這里提醒大家,以后從網(wǎng)上找東西的時(shí)候一定要自己多去嘗試一下,切記!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容