<html> <head> <title>QRtest</title> </head> <body> <img src="test4.png" id="test"> <div id="ms"></div> <div id="data"></div> <canvas id="canvas" width="19" height="14"></canvas> <div id="ms2"></div> </body> <script src="js/jsQR.js"></script> <script> let ctx; function main () { const img = document.querySelector('#test'); let canvas = document.createElement('canvas'); ctx = canvas.getContext('2d'); canvas.width = img.width; canvas.height = img.height; ctx.drawImage(img, 0, 0); const rgba = ctx.getImageData( 0, 0, img.width, img.height ).data; let start = +new Date(); const code = jsQR(rgba, img.width, img.height); let ms = (+new Date()) - start; document.querySelector('#ms').innerText = (ms + 'ms'); if (code) { document.querySelector('#data').innerText = code.binaryData.toString(); console.log(code); } canvas = document.getElementById('canvas'); ctx = canvas.getContext('2d'); start = +new Date(); display(code.binaryData); ms = (+new Date()) - start; document.querySelector('#ms2').innerText = (ms + 'ms'); } function display (data) { const w = 19; const h = 14; let x = 0; let y = 0; let val; for (let i = 0; i < data.length; i++) { val = data[i]; x = i % w; y = Math.floor(i / w); //console.log(`${x},${y} = ${val}`) ctx.fillStyle = "rgba(" + val + "," + val + "," + val + ",1.0)"; ctx.fillRect(x, y, 1, 1); } } addEventListener('DOMContentLoaded', main); </script> </html>