serratus quagga javascript html5-canvas salesforce-communities salesforce-lightning quaggajs

javascript - serratus - QuaggaJS no pudo ejecutar ''drawImage''



quagga js map (0)

Estoy intentando cargar un archivo de imagen estática utilizando el método de entrada de archivo + decodeSingle () con QuaggaJS dentro de un componente Lightning de Salesforce Communities. Básicamente, estoy aceptando una imagen de usuario como entrada, recuperando del documento por id, y luego creando un objeto de estado Quagga y pasándolo al método decodeSingle () donde recibo el siguiente error:

Error al ejecutar ''drawImage'' en ''CanvasRenderingContext2D'': el valor proporcionado no es del tipo ''(CSSImageValue o HTMLImageElement o HTMLVideoElement o HTMLCanvasElement o ImageBitmap o OffscreenCanvas)''

La imagen se muestra en la pantalla, por lo que parece que se está cargando correctamente, pero por alguna razón parece haber un error de tipo.

Etiqueta de entrada:

<input type="file" class="barcodeImages" id="barcodeImages" aura:id="barcodeImages" multiple="false" capture="camera" accept="image/*;capture=camera" onchange="handleBarcodeChange();"/>

JS:

decode: function(component) { var barcodeImages = document.getElementById("barcodeImages"); if (barcodeImages.files && barcodeImages.files.length) { var self = this; var fr = new FileReader(); fr.readAsDataURL(barcodeImages.files[0]); fr.onload = function() { console.log(''fr onload''); var state = { inputStream: { size: 800, type: "ImageStream", singleChannel: false }, numOfWorkers: 0, locator: { patchSize: "large", halfSample: false }, decoder: { readers: ["code_39_vin_reader"] }, locate: true, src: fr.result }; self.decodeSingle(state,component,0); };

Quagga decodeSingle ():

decodeSingle : function(state, component, count) { var self = this; Quagga.decodeSingle(state, function(result) { var result = JSON.parse(JSON.stringify(result)); var code = (result && result.codeResult) ? result.codeResult.code : null; if(code) { component.set("v.code",code); } else if(count < 3) { count = count+1; self.decodeSingle(state,component,count); } }); }

He tenido esto trabajando en un servidor anterior usando un enfoque de iframe incrustado donde el iframe pasa la imagen al componente principal y luego llama a Quagga. Ambos enfoques recuperan la imagen de la misma manera, por lo que no estoy seguro de por qué uno fallaría y el otro funcionaría.