Make web-workers work independently

feature/109
Christoph Oberhofer 9 years ago committed by Christoph Oberhofer
parent 633eabe86c
commit 12a39e28e5

@ -18,7 +18,7 @@ module.exports = {
singleChannel: false // true: only the red color-channel is read
},
locate: true,
numOfWorkers: 0,
numOfWorkers: 1,
decoder: {
readers: [
'code_128_reader'

@ -4,6 +4,21 @@ import {
computeGray
} from '../common/cv_utils';
function adjustCanvasSize(canvas, targetSize) {
if (canvas.width !== targetSize.x) {
if (ENV.development) {
console.log("WARNING: canvas-size needs to be adjusted");
}
canvas.width = targetSize.x;
}
if (canvas.height !== targetSize.y) {
if (ENV.development) {
console.log("WARNING: canvas-size needs to be adjusted");
}
canvas.height = targetSize.y;
}
}
var FrameGrabber = {};
FrameGrabber.create = function(inputStream, canvas) {
@ -56,6 +71,7 @@ FrameGrabber.create = function(inputStream, canvas) {
frame = inputStream.getFrame(),
ctxData;
if (frame) {
adjustCanvasSize(_canvas, _canvasSize);
_ctx.drawImage(frame, 0, 0, _canvasSize.x, _canvasSize.y);
ctxData = _ctx.getImageData(_sx, _sy, _size.x, _size.y).data;
if (doHalfSample){

@ -8,6 +8,9 @@ import Config from './config/config';
import {merge, pick, omitBy, isEmpty, omit} from 'lodash';
// scanner map
// Keep record of already created scanners for reuse?!
function fromImage(config, imageSrc, imageConfig) {
config =
merge({
@ -27,7 +30,7 @@ function fromImage(config, imageSrc, imageConfig) {
{inputStream: imageConfig});
console.log(config);
const scanner = createScanner(config);
const scanner = createScanner();
return {
addEventListener: (eventType, cb) => {
scanner.decodeSingle(config, cb);
@ -106,22 +109,27 @@ function createApi(configuration = Config) {
config(conf) {
return createApi(merge({}, configuration, conf));
},
start: function() {
start() {
defaultScanner.start();
},
stop: function() {
stop() {
defaultScanner.stop();
},
pause: function() {
pause() {
defaultScanner.pause();
},
registerResultCollector: function(resultCollector) {
registerResultCollector(resultCollector) {
defaultScanner.registerResultCollector(resultCollector);
},
ImageWrapper: ImageWrapper,
ImageDebug: ImageDebug,
ResultCollector: ResultCollector,
canvas: defaultScanner.canvas
getCanvas() {
return defaultScanner.canvas;
},
ImageWrapper,
ImageDebug,
ResultCollector,
_worker: {
createScanner
}
};
}
export default createApi();

@ -383,7 +383,8 @@ function createScanner() {
return;
}
}
var imageWrapper;
var imageWrapper,
scanner = Quagga._worker.createScanner();
self.onmessage = function(e) {
if (e.data.cmd === 'init') {
@ -393,13 +394,11 @@ function createScanner() {
x: e.data.size.x,
y: e.data.size.y
}, new Uint8Array(e.data.imageData));
Quagga.init(config, ready, imageWrapper);
Quagga.onProcessed(onProcessed);
scanner.init(config, ready, imageWrapper);
scanner.onProcessed(onProcessed);
} else if (e.data.cmd === 'process') {
imageWrapper.data = new Uint8Array(e.data.imageData);
Quagga.start();
} else if (e.data.cmd === 'setReaders') {
Quagga.setReaders(e.data.readers);
scanner.start();
}
};

Loading…
Cancel
Save