天天看點

二維碼生成和長按跳轉頁面及掃碼預覽頁面及vue中的使用

二維碼的應用在現在生活和項目中應用的越來越多,下面就對二維碼的生成及使用做一下總結。

一、二維碼的生成

qrcode.js及jquery-qrcode.js實作生成二維碼:

qrcode.js github位址: 

qrcode

jquery-qrcode.js github位址: 

jquery-qrcode

qrcode.js和query-qrcode.js的差別是:qrcode.js可以指定生成的二維碼深色、淺色區域塊的顔色,jquery-qrcode.js隻能預設黑白兩色

qrcode.js支援clear()和makeCode()方法,用于便捷清空二維碼、更換二維碼,jquery-qrcode.js不支援

下面主要說qrcode.js

qrcode.js生成二維碼的原理:qrcode.js在用于生成二維碼的容器#qrcode内生成一個canvas标簽和一個img标簽,并且以base64的編碼格式描述圖檔資訊。

二維碼生成和長按跳轉頁面及掃碼預覽頁面及vue中的使用

生成二維碼效果圖

二維碼生成和長按跳轉頁面及掃碼預覽頁面及vue中的使用

html代碼

二維碼生成和長按跳轉頁面及掃碼預覽頁面及vue中的使用

js代碼

二維碼生成和長按跳轉頁面及掃碼預覽頁面及vue中的使用

點選按鈕生成的二維碼儲存到本地

實作原理:将base64編碼格式的圖檔轉換成canvas畫布,利用toDataUrl()方法将canvas畫布資訊轉化為可供下載下傳的url資訊 

toDataUrl()

,建構下載下傳連結并模拟點選,将圖檔下載下傳到本機

二、基于qrcode.js案例demo實作将生成的二維碼儲存為本地圖檔

1、建構一個用于下載下傳的空a标簽

二維碼生成和長按跳轉頁面及掃碼預覽頁面及vue中的使用

将base64圖檔建構成畫布并模拟點選a标簽下載下傳

二維碼生成和長按跳轉頁面及掃碼預覽頁面及vue中的使用

當我們在清單中使用二維碼的時候,需要先清空上一個二維碼再生成一個新的二維碼,此時就需要用到qrcode的api,qrcode.clear()或者qrcode.makeCode(new url)

二維碼生成和長按跳轉頁面及掃碼預覽頁面及vue中的使用

三、qrcode在vue項目中的使用

vue使用qrcode,canvas生成二維碼圖檔,并下載下傳

1、npm install qrcode --save-dev   //安裝qrcode包

2、import qrcode from 'qrcode'     //在main.js中引用

3、元件中使用并生成二維碼

二維碼生成和長按跳轉頁面及掃碼預覽頁面及vue中的使用

點選下載下傳二維碼

二維碼生成和長按跳轉頁面及掃碼預覽頁面及vue中的使用

四、長按二維碼跳轉頁面

隻需要判斷是長按還是點選事件即可,然後在判斷是長按之後跳轉頁面

二維碼生成和長按跳轉頁面及掃碼預覽頁面及vue中的使用

另外一篇文章我寫的是:判斷長按還是點選事件,可以根據是長按還是點選事件來做識别二維碼的功能 

https://www.jianshu.com/writer#/notebooks/20757449/notes/22099207

五、判斷是用什麼裝置掃描的二維碼

我寫過一篇關于navigator userAgent的文章,可以通過判斷navigator userAgent的值來判斷掃描二維碼的裝置的浏覽器資訊。

https://www.jianshu.com/writer#/notebooks/20757449/notes/29059431

六、二維碼的資訊内容存在中文

我們實驗的時候發現不能識别中文内容的二維碼,如果有中文内容,如果在二維碼的内容頁面有需求使用二維碼内容中的中文資訊,則需要對該值進行解碼。

未解碼

二維碼生成和長按跳轉頁面及掃碼預覽頁面及vue中的使用

解碼後

二維碼生成和長按跳轉頁面及掃碼預覽頁面及vue中的使用

使用

decodeURIComponent

解碼

二維碼生成和長按跳轉頁面及掃碼預覽頁面及vue中的使用

七、為了隐去滑鼠懸浮在二維碼上邊的時候顯示二維碼内容,需要将生成的二維碼轉成base64格式的圖檔

二維碼生成和長按跳轉頁面及掃碼預覽頁面及vue中的使用

轉化代碼

二維碼生成和長按跳轉頁面及掃碼預覽頁面及vue中的使用

效果圖

二維碼生成和長按跳轉頁面及掃碼預覽頁面及vue中的使用

八、在目前的圖檔上添加文字或logo處理

代碼實作

二維碼生成和長按跳轉頁面及掃碼預覽頁面及vue中的使用

效果

二維碼生成和長按跳轉頁面及掃碼預覽頁面及vue中的使用

關于二維碼的git位址:

[email protected]:wangAlisa/qrcode.git

參考文檔:

https://blog.csdn.net/u011127019/article/details/51226104

大家如果有什麼好的建議或者意見,請多多指教!

繼續閱讀