mirror of
https://github.com/serratus/quaggaJS.git
synced 2026-08-13 05:31:37 +08:00
Make web-workers work independently
This commit is contained in:
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){
|
||||
|
||||
+17
-9
@@ -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();
|
||||
|
||||
+5
-6
@@ -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();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user