vue3使用jsQR解析二维码

1.了解jsQR

jsQR是一个纯javascript脚本实现的二维码识别库,不仅可以在浏览器端使用,而且支持后端node.js环境。jsQR使用较为简单,有着不错的识别率。

2.效果图

请添加图片描述

3.二维码

在这里插入图片描述

4.下载jsqr

npm i -d jsqr

5.代码

<script setup>
import { ref } from 'vue'
import jsQR from "jsqr";

const codeVal = ref('');

function decodeQRCode(image) {
  //创建画布
  const canvas = document.createElement('canvas');
  const context = canvas.getContext('2d');
  canvas.width = image.width;
  canvas.height = image.height;
  //把二维码画上去
  context.drawImage(image, 0, 0, canvas.width, canvas.height);
  const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
  //jsQR识别出来
  console.log('识别前的数据',
  imageData.data, imageData.width, imageData.height, 
);
  const decodedResult = jsQR(imageData.data, imageData.width, imageData.height, {
    inversionAttempts: 'dontInvert',
  });
  if (decodedResult) {
    //返回识别结果
    return decodedResult.data
  } else {
    window.alert('未识别到二维码!')
    return ''
  }
}

function upload() {
  let input = document.querySelector('#input')
  const file = input.files[0]
  console.log('文件是什么',file);
  if (file) {
    const reader = new FileReader();
    reader.onload = (e) => {
      const image = new Image();
      image.src = e.target.result;
      image.onload = () => {
        let code = decodeQRCode(image);
        console.log(code)//识别结果 
        codeVal.value = code;
      };
    };
    reader.readAsDataURL(file);
  }
}

</script>

<template>
  <!-- <button @click="$refs.input.click()">识别</button> -->
  <input type="file"  id="input" ref="input" @change="upload">
  <div>识别结果:{{codeVal}}</div>
  <!-- <input type="file" style="display: none" id="input" @input="upload"> -->
</template>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用jsqr插件读取二维码内容在Vue H5项目中可以按照以下步骤进行: 1.首先,在Vue项目中安装jsqr插件。可以使用npm或yarn来安装,具体安装命令如下: npm install jsqr 或 yarn add jsqr 2.在Vue项目中的组件中引入jsqr插件。可以在需要使用的组件中的script标签中使用import语句引入插件,具体代码如下: import jsqr from 'jsqr'; 3.在Vue项目中的组件中编写读取二维码内容的方法。可以在需要读取二维码的地方调用该方法,具体代码如下: methods: { readQRCode() { const canvas = document.querySelector('canvas'); //获取二维码所在的画布元素 const context = canvas.getContext('2d'); const imageData = context.getImageData(0, 0, canvas.width, canvas.height); const code = jsqr(imageData.data, imageData.width, imageData.height); //调用jsqr插件的方法读取二维码内容 if (code) { console.log('二维码内容:' + code.data); } } } 4.在Vue项目中的组件中调用读取二维码内容的方法。可以在需要读取二维码的事件或生命周期函数中调用该方法,具体代码如下: mounted() { this.readQRCode(); //在页面加载完成后调用方法读取二维码内容 } 5.在Vue项目中的组件模板中添加二维码所在的画布元素。可以在需要显示二维码的地方添加一个canvas元素,具体代码如下: <canvas></canvas> 通过以上步骤,就可以在Vue H5项目中使用jsqr插件来读取二维码的内容了。注意,使用该插件需要确保摄像头权限被允许,并且在合适的时机调用读取二维码内容的方法,以获得正确的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值