You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
QRCode-decode/browser.js

30 lines
779 B
JavaScript

7 years ago
7 years ago
var qrDecode = require('./src/QRDecode');
7 years ago
var decodeByDom = function (dom) {
var canvas = document.createElement("canvas")
var ctx = canvas.getContext('2d')
7 years ago
var isVideo = dom.tagName == 'VIDEO'
canvas.width = isVideo ? dom.videoWidth : dom.width;
canvas.height = isVideo ? dom.videoHeight : dom.height;
7 years ago
ctx.drawImage(dom, 0, 0, canvas.width, canvas.height);
var data = ctx.getImageData(0, 0, canvas.width, canvas.height);
7 years ago
return qrDecode(data)
7 years ago
}
7 years ago
7 years ago
var decodeByUrl = (src, cb) => {
7 years ago
var img = new Image();
7 years ago
img.crossOrigin="anonymous";
7 years ago
img.src = src;
img.onload = function () {
try {
7 years ago
cb(null, decodeByDom(img));
7 years ago
} catch (e) {
cb(e);
}
}
img.onerror = cb;
7 years ago
}
7 years ago
qrDecode.decodeByDom = decodeByDom;
qrDecode.decodeByUrl = decodeByUrl;
module.exports = qrDecode;