Fixed file-input example

feature/image-source
Christoph Oberhofer 8 years ago
parent d279971c46
commit 255e5a6937

@ -39,7 +39,6 @@
<ul>
<li>Use static image as source</li>
<li>Configuring EAN-Reader</li>
<li>Use custom mount-point (Query-Selector)</li>
</ul>
</p>
<div class="source-code">
@ -53,12 +52,14 @@ var App = {
init: function() {
this.attachListeners();
},
decode: function(src) {
Quagga
.decoder({readers: ['ean_reader']})
.locator({patchSize: 'medium'})
.fromImage(src, {size: 800})
.toPromise()
decode: function(file) {
Quagga.fromImage({
constraints: {src: file, width: 800, height: 800},
decoder: {readers: ['ean_reader']},
})
.then(function(scanner) {
return scanner.detect();
})
.then(function(result) {
document.querySelector('input.isbn').value = result.codeResult.code;
})
@ -84,7 +85,7 @@ var App = {
e.preventDefault();
fileInput.removeEventListener("change", onChange);
if (e.target.files && e.target.files.length) {
self.decode(URL.createObjectURL(e.target.files[0]));
self.decode(e.target.files[0]);
}
});
}

@ -5,15 +5,18 @@ var App = {
this.attachListeners();
},
decode: function(file) {
Quagga
.decoder({readers: ['ean_reader']})
.locator({patchSize: 'medium'})
.fromSource(file, {size: 800})
.toPromise()
Quagga.fromImage({
constraints: {src: file, width: 800, height: 800},
decoder: {readers: ['ean_reader']},
})
.then(function(scanner) {
return scanner.detect();
})
.then(function(result) {
document.querySelector('input.isbn').value = result.codeResult.code;
})
.catch(function() {
.catch(function(e) {
console.error(e);
document.querySelector('input.isbn').value = "Not Found";
})
.then(function() {

@ -32,7 +32,11 @@ function adjustCanvasSize(input, canvas) {
function getOrCreateCanvas(source, target) {
const $viewport = getViewport(target);
let $canvas = $viewport.querySelector("canvas.imgBuffer");
let $canvas = null;
if ($viewport) {
$canvas = $viewport.querySelector("canvas.imgBuffer");
}
if (!$canvas) {
$canvas = document.createElement("canvas");
$canvas.className = "imgBuffer";

@ -47,16 +47,20 @@ function createScanner(pixelCapturer) {
const source = pixelCapturer ? pixelCapturer.getSource() : {};
function updateViewportStyle(target) {
const $video = source.getDrawable();
const $drawable = source.getDrawable();
const $viewport = getViewport(target);
if (!$viewport) {
return;
}
const {viewport} = source.getDimensions();
const zoom = Math.floor((((2 * viewport.x) + viewport.width) / viewport.width) * 100) / 100;
const videoWidth = zoom * viewport.width;
const translate = ((viewport.x / videoWidth) * (-100)).toFixed(5);
$video.style.width = `${zoom * 100}%`;
$video.style.transform = `translate(${translate}%, ${translate}%)`;
$drawable.style.width = `${zoom * 100}%`;
$drawable.style.transform = `translate(${translate}%, ${translate}%)`;
$viewport.style.paddingBottom = `${(viewport.height * 100 / viewport.width).toFixed(5)}%`;
$viewport.style.overflow = "hidden";
$viewport.style.height = 0;

Loading…
Cancel
Save