解析二维码的三种方式

效果预览

在这里插入图片描述

方式一jsqr

  // jsQR识别
  var fileJsqrId = document.getElementById('upload-jsqr');
  fileJsqrId.addEventListener('change', function (e) {
     const files = e.target.files;
     const file = files[0];
     const reader = new FileReader();
     reader.readAsDataURL(file);
     reader.addEventListener('load', (event) => {
                var img = new Image();
                img.src = event.target.result;
                img.onload = function () {
                    var c = document.getElementById('canvas-jsqr');
                    var ctx = c.getContext('2d');
                    c.setAttribute('width', img.width);
                    c.setAttribute('height', img.height);
                    ctx.drawImage(img, 0, 0, img.width, img.height);
                    var imageData = ctx.getImageData(0, 0, img.width, img.height);
                    const code = jsQR(imageData.data, imageData.width, imageData.height, {
                        inversionAttempts: "dontInvert",
                    });
                    if (code) {
                        document.getElementById('result-jsqr').value = code.data;
                    } else {
                        alert('ERROR!识别错误!')
                    }
                }
            })
        })

方式二 qrcode

   // qrcode识别
 var fileQrcodeId = document.getElementById('upload-qrcode');
 fileQrcodeId.onchange = function (e) {
     const files = e.target.files;
     const file = files[0];
     qrcode.decode(getObjectURL(file, 'canvas-qrcode'));
     qrcode.callback = function (result) {
        document.getElementById('result-qrcode').value = result;
   }
}

方式三qrcode-decoder

 // qrcode decoder 识别
  var qrcodedecoder = document.getElementById('upload-decoder');
  qrcodedecoder.onchange = function (e) {
       const files = e.target.files;
       const file = files[0];
       var qr = new QrcodeDecoder();
       qr.decodeFromImage(getObjectURL(file, 'canvas-decoder')).then((res) => {
                document.getElementById('result-decoder').value = res.data;
            });
        }

完整代码:Github地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值