最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue3中進行二維碼的生成與解碼實現(xiàn)詳解

 更新時間:2023年03月02日 15:49:07   作者:隱兮  
這篇文章主要為大家介紹了Vue3中進行二維碼的生成與解碼實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

使用到的庫

最近在項目中需要使用到二維碼的生成解碼來進行一些認證操作,在此記錄一下我的學(xué)習(xí)過程。

npm i qrcode.vue --save // 用來生成二維碼的qr庫
npm i jsqr --save // 用來解碼的庫

github地址:

github.com/scopewu/qrc…

github.com/cozmo/jsQR

生成二維碼的流程

我的需求是用二維碼來保存一個對象,對象中保存著許多復(fù)雜的信息,用戶首次填寫完信息,獲取二維碼,下次只需要上傳二維碼就不用重復(fù)輸入信息了。

在我們的組件中導(dǎo)入這個庫

import QrcodeVue from 'qrcode.vue';

簡單使用如下:

<template>
    <div>
        <qrcode-vue :value="value" :size="size" level="H"></qrcode-vue>
    </div>
</template>
<script setup>
import QrcodeVue from 'qrcode.vue';
components: {
QrcodeVue
};
const value = JSON.stringify({name: 'limiang', age: 14});  //傳入的值,要求是字符串,需要將對象進行轉(zhuǎn)換
const size = 200; //二維碼大小
</script>

頁面顯示:

二維碼的解碼過程

使用jsqr對二維碼進行解碼我們了解一下它傳入的參數(shù),閱讀一下npm文檔:

npm地址:www.npmjs.com/package/jsq…

可以看到imageData參數(shù)要求的格式是Uint8clampedArray,它通常來自ImageData接口,因此我們將使用canvas來獲取這個數(shù)據(jù)。

實現(xiàn)思路

1:創(chuàng)建一個img實例,將img.src設(shè)置為我們的二維碼地址,這里我們用vant的上傳組件,在回調(diào)中獲取到file.content,是一個base64碼

   img.src= file.content;

2:因為圖片需要在加載完成之后才能使用,因此在img.onload中編寫我們的解碼代碼

3:創(chuàng)建canvas畫布

// 將圖像繪制到canvas中
const canvas = document.createElement('canvas');
const ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
// 獲取圖像數(shù)據(jù)
const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);

4:這里的getImageData() 方法返回的就是Uint8clampedArray

5:最后,我們使用jsqr解碼

const qrdata = jsqr (imageData.data, imageData.width, imageData.height);

完整代碼:

<template>
    <div>
        <van-uploader :after-read="afterRead" />
    </div>
</template>
<script setup>
import jsqr from 'jsqr'
function afterRead(file) {
// 創(chuàng)建圖像元素
const img = new Image();
img.onload = () => {
// 將圖像繪制到canvas中
const canvas = document.createElement('canvas');
const ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
// 獲取圖像數(shù)據(jù)
const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
//二維碼解碼
const qrdata = jsqr(imageData.data, imageData.width, imageData.height);
//字符串轉(zhuǎn)對象
let option = JSON.parse(qrdata.data);
console.log(option);
}
img.src= file.content;
}
</script>

以上就是簡單的實現(xiàn)二維碼生成和解碼的過程,大家也可以將它們封裝成組件來使用。

更多關(guān)于Vue3二維碼生成解碼的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue實現(xiàn)打包添加二級目錄

    vue實現(xiàn)打包添加二級目錄

    這篇文章主要介紹了vue實現(xiàn)打包添加二級目錄方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Vue數(shù)據(jù)與事件綁定以及Class和Style的綁定詳細講解

    Vue數(shù)據(jù)與事件綁定以及Class和Style的綁定詳細講解

    這篇文章主要介紹了Vue數(shù)據(jù)與事件綁定以及Class和Style的綁定,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • 利用Vue構(gòu)造器創(chuàng)建Form組件的通用解決方法

    利用Vue構(gòu)造器創(chuàng)建Form組件的通用解決方法

    這篇文章主要給大家介紹了關(guān)于利用Vue構(gòu)造器創(chuàng)建Form組件的通用解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • 詳解Vue中添加過渡效果

    詳解Vue中添加過渡效果

    本篇文章主要介紹了詳解Vue中添加過渡效果 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • Vue.js之mixins混合組件詳解

    Vue.js之mixins混合組件詳解

    這篇文章主要介紹了Vue.js之mixins混合組件詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Vue3學(xué)習(xí)之表單的使用示例詳解

    Vue3學(xué)習(xí)之表單的使用示例詳解

    這篇文章主要為大家詳細介紹了Vue3中表單的使用的相關(guān)知識,文中的示例代碼講解詳細,對我們掌握Vue3有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-12-12
  • vue單應(yīng)用在ios系統(tǒng)中實現(xiàn)微信分享功能操作

    vue單應(yīng)用在ios系統(tǒng)中實現(xiàn)微信分享功能操作

    這篇文章主要介紹了vue單應(yīng)用在ios系統(tǒng)中實現(xiàn)微信分享功能操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Vue Element前端應(yīng)用開發(fā)之根據(jù)ABP后端接口實現(xiàn)前端展示

    Vue Element前端應(yīng)用開發(fā)之根據(jù)ABP后端接口實現(xiàn)前端展示

    本篇著重介紹基于ABP后端接口信息,實現(xiàn)對前端界面的開發(fā)工作。
    2021-05-05
  • vue中實現(xiàn)一個項目里兼容移動端和pc端

    vue中實現(xiàn)一個項目里兼容移動端和pc端

    這篇文章主要介紹了vue中實現(xiàn)一個項目里兼容移動端和pc端問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Vue2路由跳轉(zhuǎn)傳參中文問題處理方案

    Vue2路由跳轉(zhuǎn)傳參中文問題處理方案

    在el-table中的記錄列表中放置了一個 操作按鈕,點這個按鈕時可以新增一個tab頁簽,并將通過路由傳參方式將一些信息傳遞到新打開的tab頁簽中,但發(fā)現(xiàn)傳遞中文參數(shù)時會出現(xiàn)報錯,所以本文給大家介紹了Vue2路由跳轉(zhuǎn)傳參中文問題處理方案,需要的朋友可以參考下
    2024-05-05

最新評論

历史| 罗定市| 琼海市| 南平市| 启东市| 乡城县| 库伦旗| 乌拉特前旗| 驻马店市| 和龙市| 怀仁县| 黄梅县| 西吉县| 明溪县| 扬州市| 宁河县| 乌恰县| 姚安县| 长岭县| 仙居县| 广西| 嘉定区| 武邑县| 和林格尔县| 沁源县| 拉孜县| 新安县| 洪泽县| 山西省| 旌德县| 新巴尔虎右旗| 探索| 大邑县| 醴陵市| 绥宁县| 宣城市| 许昌市| 威远县| 桦川县| 靖远县| 若羌县|