xc-qrcode
Version:
decode qrcode
44 lines (39 loc) • 1.04 kB
JavaScript
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