前端如何识别上传的二维码---jsQR

文章介绍了如何在HTML页面中利用npm包jsQR和JavaScript实现文件上传,对上传的图片进行二维码识别,并获取识别结果。代码展示了如何创建canvas、读取文件、解码二维码的过程。
摘要由CSDN通过智能技术生成

npm

npm i -d jsqr

html

<el-button @click="$refs.input.click()">识别</el-button>
<input type="file" style="display: none" id="input" @input="upload">

js

import jsQR from "jsqr";

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识别出来
      const decodedResult = jsQR(imageData.data, imageData.width, imageData.height, {
        inversionAttempts: 'dontInvert',
      });
      if (decodedResult) {
      //返回识别结果
        return decodedResult.data
      } else {
      	window.alert('未识别到二维码!'return ''
      }
    }
    
upload(){
	let input = document.querySelector('#input')
	const file = input.files[0]
	if (file) {
	      const reader = new FileReader();
	      reader.onload = (e) => {
	        const image = new Image();
	        image.src = e.target.result;
	        image.onload = () => {
	          let code = this.decodeQRCode(image);
	          console.log(code)//识别结果 
	        };
	      };
	      reader.readAsDataURL(file);
	    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值