-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
83 lines (64 loc) · 2.02 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import './static/style.scss';
let wasm;
import("./pkg").then(module => {
console.log("module", module)
module.run_app();
wasm = module
initialize();
});
const constraints = {
video: {
facingMode: "environment",
},
};
var video;
var scale = 0.25;
var decodeQr = function (byteArray) {
try {
const output = wasm.decode_qr(byteArray);
const usedOutput = output.includes("[Error]") ? null : output;
console.log("output", usedOutput)
if(usedOutput) {
let htmlElement = document.getElementById("video");
htmlElement.remove();
let result = document.getElementById("result");
var a = document.createElement('a');
var linkText = document.createTextNode(usedOutput);
a.appendChild(linkText);
a.title = usedOutput;
a.href = usedOutput;
result.appendChild(a);
}
} catch (err) {
console.log("err", err)
}
};
var captureImage = function () {
var canvas = document.createElement("canvas");
canvas.width = video.videoWidth * scale;
canvas.height = video.videoHeight * scale;
canvas
.getContext("2d")
.drawImage(video, 0, 0, canvas.width, canvas.height);
// var img = document.createElement("img");
// img.src = canvas.toDataURL();
window.myCanvas = canvas;
// $output.appendChild(img);
// const clampedByteArray = myCanvas.getContext("2d").getImageData(0, 0, 640, 480).data;
canvas.toBlob(blob => {
const reader = new FileReader();
reader.addEventListener("loadend", () => {
const arrayBuffer = reader.result;
window.ab = arrayBuffer;
decodeQr(new Uint8Array(arrayBuffer));
});
reader.readAsArrayBuffer(blob);
});
};
var initialize = function () {
video = document.getElementById("video");
navigator.mediaDevices.getUserMedia(constraints).then(stream => {
video.srcObject = stream;
});
setInterval(captureImage, 300);
};