Created
January 10, 2023 13:41
-
-
Save CezaryDanielNowak/a94633003f07c613b55ce8fd214ec771 to your computer and use it in GitHub Desktop.
/** * BarcodeDetector has an "Experimental" status. It sometimes doesn't work for no reason. * * @param {string} barcodeType only qr_code and pdf417 are supported * @return {boolean} (async) If BarcodeDetector works or not */
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* BarcodeDetector has an "Experimental" status. It sometimes doesn't work for no reason. | |
* | |
* @param {string} barcodeType only qr_code and pdf417 are supported | |
* @return {boolean} (async) If BarcodeDetector works or not | |
*/ | |
const isBarcodeDetectorWorking = (barcodeType) => { | |
return new Promise((resolve, reject) => { | |
if (typeof BarcodeDetector === 'undefined') return reject('UNSUPPORTED'); | |
const barcodeDetector = new BarcodeDetector({ | |
formats: [barcodeType || 'pdf417'], | |
}); | |
const image = new Image(); | |
image.onload = function () { | |
const canvas = document.createElement('canvas'); | |
canvas.width = image.width; | |
canvas.height = image.height; | |
const ctx = canvas.getContext('2d'); | |
ctx.drawImage(image, 0, 0); | |
barcodeDetector | |
.detect(ctx.getImageData(0, 0, canvas.width, canvas.height)) | |
.then((result) => { | |
if (result[0].rawValue !== 'a') { | |
throw new Error(); | |
} | |
}) | |
.then(resolve) | |
.catch(() => { | |
reject('DETECTION_ERROR'); | |
}); | |
}; | |
/* eslint-disable max-len */ | |
if (barcodeType === 'qr_code') { | |
image.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHMAAABzAQMAAACRja+lAAAABlBMVEUAAAD///+l2Z/dAAAA0klEQVQ4y62VMRKDMAwE5aFwmSf4J/Axz8AMHyM/4QmUrlBOIolJm5ML8FKcLd1hi/6MXVhugqHPY9jxHgJ4gqpuMu+QXwN4hGpL0G/yiGLsdw7lE9Mg9vqt9Hs/CDZ/2mjS3S+CPTbWz3ueCEbViy1RBU0IYDyXkm2qJ0LEs3cR1ig6u/KM0mvRzfV9/zTrItkWuUxi+eNPLdl/apav/ExHlbxJBFu+7WOR5Plh2c+HUUy/nxcka89PCMOkb35Y9vqt9Lc+y+5P8vx0v/7n4PvtBfTSFutld9P4AAAAAElFTkSuQmCC'; | |
} else { | |
image.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAawAAAB6BAMAAAAR9noZAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAYUExURQAAAP///7+/v0BAQDAwMJWVlc/Pz2hoaAEDc7cAAALdSURBVHja7dxLjqMwFIVht8QC2hMWADuADWTiHURizCgrgPU3+D4wj1LXhFR39CNFRQob+yt5cnytCvEjrwALFixYsGD9b6zfYX91sS0+69VePLHfxC9axEOb8tv+/tz+b6OU7eLhHb9gwYIFCxYsWLBgwYIFC9a/x3r16/U4DFj1UzP08/ItNc1yJ21SM+YW1XIf8pNnbrv2rpf79W1zMUrKv5ORrM/4HlbdNHl6e1ZaKNMyhXU6/XInbSqddFJOr1MVkODGYhQBy0jWZ34PK/rrStZ+OW19t8V2HuV6iR0XYgcLFixYsGDBggULFixYH8yS7CufRiPillvXeDgvsXDy9LvejTkophwtZYqSd6vcdtanTW4pWVg+8vQtMTI5SuJ8rxOImn3XqdX52UNbr9Ba87GxZKIptx31aZ9bCiLpH6t26M2h/7x1Ui6Pq82abUOmXHLlwrvemDm/K8KCBQsWLFiwYMGCBQvWh7Ks8Ckhz6JiyZKoV3vEnHJAnLzMarXgKcdIK9OOWoXuvUWnkdSSdbgzRlqZWiK5BfuSJTn55RsCQ47zgxfFbcJDnqoV1WflNd6i0w0ES9bhztB/PlBwPp7QnRZjucFy3HJpd8vr+6PAggULFixYsGDBggUL1mexrMD68EH2Z6tbD5ddzsgWI5+ebls/dGxZ2OrLjZdUy7AqvV5eab4p9EvV+Oms/dnq1pOwkSX0Pzzdtn5E3LKw1Zd7L4CXWwvSq/ZK801bNOfjBOXWTHtYcOHiuEI4bc10h82fcDFOe+/OEyxYsGDBggULFixYsGD9OKtMrskz7eC5tdMku03l5fVli5G9p+GoZ6qtCPt0SpnDk1aeJ+1zA6tMrpVn2slza6dJdmPVXl+20N94Go56ptpK5g9nlTm8UvSgfW4+3n98bSyO9R9/ht3mzfXB/7BbtMdDEt3pfbBgwYIFCxYsWLBgwYIF6wdZ/IdxWLBgfe/6A176izqW7zTOAAAAAElFTkSuQmCC'; | |
} | |
/* eslint-enable max-len */ | |
}); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment