From b49910729dd4aae6624b31dabd474396c916bdc0 Mon Sep 17 00:00:00 2001 From: danimoh Date: Fri, 12 Jan 2018 15:35:37 +0100 Subject: [PATCH] option to scan on the whole image if scanning within sourceRect failed --- qr-scanner.min.js | 10 +++++----- qr-scanner.min.js.map | 2 +- src/qr-scanner.js | 11 +++++++++-- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/qr-scanner.min.js b/qr-scanner.min.js index 1387ffd..0282989 100644 --- a/qr-scanner.min.js +++ b/qr-scanner.min.js @@ -1,10 +1,10 @@ 'use strict';class QrScanner{constructor(a,b,c=QrScanner.DEFAULT_CANVAS_SIZE){this.$video=a;this.$canvas=document.createElement("canvas");this._onDecode=b;this.$canvas.width=c;this.$canvas.height=c;this._sourceRect={x:0,y:0,width:c,height:c};this.$video.addEventListener("canplay",()=>this._updateSourceRect());this.$video.addEventListener("play",()=>{this._updateSourceRect();this._scanFrame()},false);this._qrWorker=new Worker("/qr-scanner/qr-scanner-worker.min.js")}_updateSourceRect(){const a=Math.round(2/ 3*Math.min(this.$video.videoWidth,this.$video.videoHeight));this._sourceRect.width=this._sourceRect.height=a;this._sourceRect.x=(this.$video.videoWidth-a)/2;this._sourceRect.y=(this.$video.videoHeight-a)/2}_scanFrame(){if(this.$video.paused||this.$video.ended)return false;requestAnimationFrame(()=>{QrScanner.scanImage(this.$video,this._sourceRect,this._qrWorker,this.$canvas,true).then(this._onDecode,(a)=>{a!=="QR code not found."&&console.error(a)}).then(()=>this._scanFrame())})}set active(a){a?this._cameraOn(): this._cameraOff()}_cameraOn(a){clearTimeout(this._offTimeout);const b=[{facingMode:"environment",width:{min:1024}},{facingMode:"environment",width:{min:768}},{facingMode:"environment"}];a=a||b;navigator.mediaDevices.getUserMedia({video:a.shift()}).then((a)=>this.$video.srcObject=a).catch(()=>{if(a.length>0)this._cameraOn(a);else throw Error("Couldn't start camera");})}_cameraOff(){this.$video.pause();this._offTimeout=setTimeout(()=>this.$video.srcObject.getTracks()[0].stop(),3E3)}setGrayscaleWeights(a, -b,c){this._qrWorker.postMessage({type:"grayscaleWeights",data:{red:a,green:b,blue:c}})}static scanImage(a,b=null,c=null,d=null,e=false){return new Promise((k,f)=>{c=c||new Worker("/qr-scanner/qr-scanner-worker.min.js");let l,h,g;h=(a)=>{if(a.data.type==="qrResult"){c.removeEventListener("message",h);c.removeEventListener("error",g);clearTimeout(l);a.data.data!==null?k(a.data.data):f("QR code not found.")}};g=()=>{c.removeEventListener("message",h);c.removeEventListener("error",g);clearTimeout(l); -f("Worker error.")};c.addEventListener("message",h);c.addEventListener("error",g);l=setTimeout(g,3E3);QrScanner._loadImage(a).then((a)=>{a=QrScanner._getImageData(a,b,d,e);c.postMessage({type:"decode",data:a},[a.data.buffer])}).catch(f)})}static _getImageData(a,b=null,c=null,d=false){c=c||document.createElement("canvas");const e=b&&b.x?b.x:0,k=b&&b.y?b.y:0,f=b&&b.width?b.width:a.width||a.videoWidth;b=b&&b.height?b.height:a.height||a.videoHeight;if(!d&&(c.width!==f||c.height!==b)){c.width=f;c.height= -b}d=c.getContext("2d",{alpha:false});d.imageSmoothingEnabled=false;d.drawImage(a,e,k,f,b,0,0,c.width,c.height);return d.getImageData(0,0,c.width,c.height)}static _loadImage(a){if(a instanceof HTMLCanvasElement||a instanceof HTMLVideoElement||window.ImageBitmap&&a instanceof window.ImageBitmap||window.OffscreenCanvas&&a instanceof window.OffscreenCanvas)return Promise.resolve(a);if(a instanceof Image)return QrScanner._awaitImageLoad(a).then(()=>a);if(a instanceof File||a instanceof URL||typeof a=== -"string"){const b=new Image;b.src=a instanceof File?URL.createObjectURL(a):a;return QrScanner._awaitImageLoad(b).then(()=>{a instanceof File&&URL.revokeObjectURL(b.src);return b})}return Promise.reject("Unsupported image type.")}static _awaitImageLoad(a){return new Promise((b,c)=>{if(a.complete&&a.naturalWidth!==0)b();else{let d,e;d=()=>{a.removeEventListener("load",d);a.removeEventListener("error",e);b()};e=()=>{a.removeEventListener("load",d);a.removeEventListener("error",e);c("Image load error")}; -a.addEventListener("load",d);a.addEventListener("error",e)}})}}QrScanner.DEFAULT_CANVAS_SIZE=400; +b,c){this._qrWorker.postMessage({type:"grayscaleWeights",data:{red:a,green:b,blue:c}})}static scanImage(a,b=null,c=null,d=null,e=false,g=false){const f=new Promise((f,g)=>{c=c||new Worker("/qr-scanner/qr-scanner-worker.min.js");let l,k,h;k=(a)=>{if(a.data.type==="qrResult"){c.removeEventListener("message",k);c.removeEventListener("error",h);clearTimeout(l);a.data.data!==null?f(a.data.data):g("QR code not found.")}};h=()=>{c.removeEventListener("message",k);c.removeEventListener("error",h);clearTimeout(l); +g("Worker error.")};c.addEventListener("message",k);c.addEventListener("error",h);l=setTimeout(h,3E3);QrScanner._loadImage(a).then((a)=>{a=QrScanner._getImageData(a,b,d,e);c.postMessage({type:"decode",data:a},[a.data.buffer])}).catch(g)});return b&&g?f.catch(()=>QrScanner.scanImage(a,null,c,d,e)):f}static _getImageData(a,b=null,c=null,d=false){c=c||document.createElement("canvas");const e=b&&b.x?b.x:0,g=b&&b.y?b.y:0,f=b&&b.width?b.width:a.width||a.videoWidth;b=b&&b.height?b.height:a.height||a.videoHeight; +if(!d&&(c.width!==f||c.height!==b)){c.width=f;c.height=b}d=c.getContext("2d",{alpha:false});d.imageSmoothingEnabled=false;d.drawImage(a,e,g,f,b,0,0,c.width,c.height);return d.getImageData(0,0,c.width,c.height)}static _loadImage(a){if(a instanceof HTMLCanvasElement||a instanceof HTMLVideoElement||window.ImageBitmap&&a instanceof window.ImageBitmap||window.OffscreenCanvas&&a instanceof window.OffscreenCanvas)return Promise.resolve(a);if(a instanceof Image)return QrScanner._awaitImageLoad(a).then(()=> +a);if(a instanceof File||a instanceof URL||typeof a==="string"){const b=new Image;b.src=a instanceof File?URL.createObjectURL(a):a;return QrScanner._awaitImageLoad(b).then(()=>{a instanceof File&&URL.revokeObjectURL(b.src);return b})}return Promise.reject("Unsupported image type.")}static _awaitImageLoad(a){return new Promise((b,c)=>{if(a.complete&&a.naturalWidth!==0)b();else{let d,e;d=()=>{a.removeEventListener("load",d);a.removeEventListener("error",e);b()};e=()=>{a.removeEventListener("load",d); +a.removeEventListener("error",e);c("Image load error")};a.addEventListener("load",d);a.addEventListener("error",e)}})}}QrScanner.DEFAULT_CANVAS_SIZE=400; //# sourceMappingURL=qr-scanner.min.js.map diff --git a/qr-scanner.min.js.map b/qr-scanner.min.js.map index c0627ee..382da80 100644 --- a/qr-scanner.min.js.map +++ b/qr-scanner.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["qr-scanner.js"],"names":["QrScanner","video","onDecode","canvasSize","DEFAULT_CANVAS_SIZE","$video","$canvas","document","createElement","_onDecode","width","height","_sourceRect","x","y","addEventListener","_updateSourceRect","_scanFrame","_qrWorker","Worker","sourceRectSize","Math","round","min","smallestDimension","videoWidth","videoHeight","paused","ended","requestAnimationFrame","scanImage","then","error","console","active","_cameraOn","_cameraOff","settingsToTry","clearTimeout","_offTimeout","defaultSettings","facingMode","navigator","mediaDevices","getUserMedia","shift","stream","srcObject","catch","length","Error","pause","setTimeout","getTracks","stop","red","green","blue","postMessage","type","data","imageOrFileOrUrl","sourceRect","worker","canvas","fixedCanvasSize","Promise","resolve","reject","timeout","onMessage","onError","event","removeEventListener","_loadImage","image","imageData","_getImageData","buffer","sourceRectX","sourceRectY","sourceRectWidth","sourceRectHeight","context","getContext","alpha","imageSmoothingEnabled","drawImage","getImageData","HTMLCanvasElement","HTMLVideoElement","window","ImageBitmap","OffscreenCanvas","Image","_awaitImageLoad","File","URL","src","createObjectURL","revokeObjectURL","complete","naturalWidth","onLoad"],"mappings":"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","file":"qr-scanner.min.js","sourcesContent":[]} \ No newline at end of file +{"version":3,"sources":["qr-scanner.js"],"names":["QrScanner","video","onDecode","canvasSize","DEFAULT_CANVAS_SIZE","$video","$canvas","document","createElement","_onDecode","width","height","_sourceRect","x","y","addEventListener","_updateSourceRect","_scanFrame","_qrWorker","Worker","sourceRectSize","Math","round","min","smallestDimension","videoWidth","videoHeight","paused","ended","requestAnimationFrame","scanImage","then","error","console","active","_cameraOn","_cameraOff","settingsToTry","clearTimeout","_offTimeout","defaultSettings","facingMode","navigator","mediaDevices","getUserMedia","shift","stream","srcObject","catch","length","Error","pause","setTimeout","getTracks","stop","red","green","blue","postMessage","type","data","imageOrFileOrUrl","sourceRect","worker","canvas","fixedCanvasSize","alsoTryWithoutSourceRect","promise","Promise","resolve","reject","timeout","onMessage","onError","event","removeEventListener","_loadImage","image","imageData","_getImageData","buffer","sourceRectX","sourceRectY","sourceRectWidth","sourceRectHeight","context","getContext","alpha","imageSmoothingEnabled","drawImage","getImageData","HTMLCanvasElement","HTMLVideoElement","window","ImageBitmap","OffscreenCanvas","Image","_awaitImageLoad","File","URL","src","createObjectURL","revokeObjectURL","complete","naturalWidth","onLoad"],"mappings":"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","file":"qr-scanner.min.js","sourcesContent":[]} \ No newline at end of file diff --git a/src/qr-scanner.js b/src/qr-scanner.js index 92c3470..f95990d 100644 --- a/src/qr-scanner.js +++ b/src/qr-scanner.js @@ -87,8 +87,9 @@ class QrScanner { } /* async */ - static scanImage(imageOrFileOrUrl, sourceRect=null, worker=null, canvas=null, fixedCanvasSize=false) { - return new Promise((resolve, reject) => { + static scanImage(imageOrFileOrUrl, sourceRect=null, worker=null, canvas=null, fixedCanvasSize=false, + alsoTryWithoutSourceRect=false) { + const promise = new Promise((resolve, reject) => { worker = worker || new Worker('/qr-scanner/qr-scanner-worker.min.js'); let timeout, onMessage, onError; onMessage = event => { @@ -121,6 +122,12 @@ class QrScanner { }, [imageData.data.buffer]); }).catch(reject); }); + + if (sourceRect && alsoTryWithoutSourceRect) { + return promise.catch(() => QrScanner.scanImage(imageOrFileOrUrl, null, worker, canvas, fixedCanvasSize)); + } else { + return promise; + } } /* async */