欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

使用到的庫

最近在項目中需要使用到二維碼的生成解碼來進(jìn)行一些認(rè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});  //傳入的值,要求是字符串,需要將對象進(jìn)行轉(zhuǎn)換
const size = 200; //二維碼大小
</script>

頁面顯示:

二維碼的解碼過程

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

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

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

實(shí)現(xiàn)思路

1:創(chuàng)建一個img實(shí)例,將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>

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

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

相關(guān)文章

  • vue中如何安裝使用jquery

    vue中如何安裝使用jquery

    這篇文章主要介紹了vue中如何安裝使用jquery的教程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 解決Vue_localStorage本地存儲和本地取值問題

    解決Vue_localStorage本地存儲和本地取值問題

    這篇文章主要介紹了解決Vue_localStorage本地存儲和本地取值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 詳解Vue如何通過URL傳遞與獲取參數(shù)

    詳解Vue如何通過URL傳遞與獲取參數(shù)

    Vue Router 路由實(shí)際上就是一種映射關(guān)系,例如,多個選項卡之間的切換就可以使用路由功能來實(shí)現(xiàn),在實(shí)際的開發(fā)中,經(jīng)常需要通過URL來傳遞參數(shù),同時在 JavaScript 腳本中需要獲取URL中的參數(shù),下面將介紹 Vue 項目中,如何通過 URL 對參數(shù)進(jìn)行傳遞與獲取,需要的朋友可以參考下
    2024-09-09
  • vue的狀態(tài)更新方式(異步更新解決)

    vue的狀態(tài)更新方式(異步更新解決)

    這篇文章主要介紹了vue的狀態(tài)更新方式(異步更新解決),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 一文秒懂Vue3的v-model

    一文秒懂Vue3的v-model

    v-model 是 Vue 內(nèi)置的指令作為屬性接收一個變量(不能是常量)綁定到普通組件和自定義組件中,本文給大家介紹Vue3的v-model示例代碼,感興趣的朋友跟隨小編一起看看吧
    2023-02-02
  • vue3中的伸縮菜單組件

    vue3中的伸縮菜單組件

    這篇文章主要介紹了vue3中的伸縮菜單組件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vue.js數(shù)據(jù)響應(yīng)式原理解析

    vue.js數(shù)據(jù)響應(yīng)式原理解析

    這篇文章主要介紹了vue.js數(shù)據(jù)響應(yīng)式原理解析,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • Vue.js在數(shù)組中插入重復(fù)數(shù)據(jù)的實(shí)現(xiàn)代碼

    Vue.js在數(shù)組中插入重復(fù)數(shù)據(jù)的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Vue.js在數(shù)組中插入重復(fù)數(shù)據(jù)的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2017-11-11
  • vue中axios處理http發(fā)送請求的示例(Post和get)

    vue中axios處理http發(fā)送請求的示例(Post和get)

    本篇文章主要介紹了vue中axios處理http請求的示例(Post和get),這里整理了詳細(xì)的代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • vue中引用阿里字體圖標(biāo)的方法

    vue中引用阿里字體圖標(biāo)的方法

    這篇文章主要介紹了vue中引用阿里字體圖標(biāo)出現(xiàn)錯誤問題的解決方法,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-02-02

最新評論