UNPKG

xc-qrcode

Version:

decode qrcode

44 lines (39 loc) 1.04 kB
import gzip from 'lrz'; import qrcodeParser from 'qrcode-parser'; // 将图片转成base64位的png function image2PngBase64(img) { var canvas = document.createElement("canvas"); canvas.width = img.width; canvas.height = img.height; var ctx = canvas.getContext("2d"); ctx.drawImage(img, 0, 0, img.width, img.height); var dataURL = canvas.toDataURL("image/png"); return dataURL; } // 加载图片并转为png格式的base64 function loadImage(img) { return new Promise((resolve, reject) => { img.onload = () => { const base64 = image2PngBase64(img); resolve(base64); }; img.onerror = () => { reject(); }; }); } // 解析二维码 async function parseQrcode(file) { let msg = ""; const gzipImg = await gzip(URL.createObjectURL(file.raw)); let img = new Image(); img.src = gzipImg.base64; const pngBase64 = await loadImage(img); try { msg = await qrcodeParser(pngBase64); return msg; } catch (err) { return 'decode error'; } } export default parseQrcode