mirror of
https://github.com/serratus/quaggaJS.git
synced 2026-08-12 21:21:42 +08:00
Use worker without external file
This commit is contained in:
+1
-36
@@ -21,7 +21,7 @@ module.exports = function(grunt) {
|
||||
all : ['Gruntfile.js', 'src/*.js']
|
||||
},
|
||||
requirejs : {
|
||||
quagga : {
|
||||
compile : {
|
||||
options : {
|
||||
almond : true,
|
||||
wrap : {
|
||||
@@ -51,41 +51,6 @@ module.exports = function(grunt) {
|
||||
}
|
||||
},
|
||||
|
||||
"paths" : {
|
||||
"typedefs" : "typedefs",
|
||||
"glMatrix" : "vendor/glMatrix",
|
||||
"glMatrixAddon" : "glMatrixAddon"
|
||||
}
|
||||
}
|
||||
},
|
||||
locator : {
|
||||
options : {
|
||||
almond : true,
|
||||
wrap : {
|
||||
startFile : 'build/locator_start.frag',
|
||||
endFile : 'build/locator_end.frag'
|
||||
},
|
||||
"baseUrl" : "src",
|
||||
"name" : "barcode_locator",
|
||||
"out" : "dist/locator.js",
|
||||
"include" : ['barcode_locator'],
|
||||
"optimize" : "none",
|
||||
"findNestedDependencies" : true,
|
||||
"skipSemiColonInsertion" : true,
|
||||
"shim" : {
|
||||
"typedefs" : {
|
||||
"deps" : [],
|
||||
"exports" : "typedefs"
|
||||
},
|
||||
"glMatrix" : {
|
||||
"deps" : ["typedefs"],
|
||||
"exports" : "glMatrix"
|
||||
},
|
||||
"glMatrixAddon" : {
|
||||
"deps" : ["glMatrix"],
|
||||
"exports" : "glMatrixAddon"
|
||||
}
|
||||
},
|
||||
"paths" : {
|
||||
"typedefs" : "typedefs",
|
||||
"glMatrix" : "vendor/glMatrix",
|
||||
|
||||
Vendored
-5068
File diff suppressed because it is too large
Load Diff
Vendored
+53
-3
@@ -6173,9 +6173,13 @@ function(ImageWrapper, CVUtils, Rasterizer, Tracer, skeletonizer, ArrayHelper, I
|
||||
}
|
||||
|
||||
function initWorker(cb) {
|
||||
var tmpData;
|
||||
var tmpData,
|
||||
blobURL;
|
||||
|
||||
blobURL = generateWorkerBlob();
|
||||
_worker = new Worker(blobURL);
|
||||
URL.revokeObjectURL(blobURL);
|
||||
|
||||
_worker = new Worker('../src/worker_locator.js');
|
||||
tmpData = _inputImageWrapper.data;
|
||||
_inputImageWrapper.data = null; // do not send the data along
|
||||
_worker.postMessage({cmd: 'init', inputImageWrapper: _inputImageWrapper, config: _config});
|
||||
@@ -6191,6 +6195,50 @@ function(ImageWrapper, CVUtils, Rasterizer, Tracer, skeletonizer, ArrayHelper, I
|
||||
};
|
||||
}
|
||||
|
||||
function generateWorkerBlob() {
|
||||
var blob,
|
||||
quaggaAbsoluteUrl,
|
||||
scripts = document.getElementsByTagName('script'),
|
||||
regex = new RegExp('\/' + _config.scriptName + '$');
|
||||
|
||||
quaggaAbsoluteUrl = Array.prototype.slice.apply(scripts).filter(function(script) {
|
||||
return script.src && script.src.match(regex);
|
||||
}).map(function(script) {
|
||||
return script.src;
|
||||
})[0];
|
||||
|
||||
/* jshint ignore:start */
|
||||
blob = new Blob(['(' +
|
||||
(function(scriptUrl){
|
||||
importScripts(scriptUrl);
|
||||
var inputImageWrapper,
|
||||
config,
|
||||
Locator = Quagga.Locator;
|
||||
|
||||
self.onmessage = function(e) {
|
||||
if (e.data.cmd === 'init') {
|
||||
inputImageWrapper = e.data.inputImageWrapper;
|
||||
config = e.data.config;
|
||||
|
||||
config.useWorker = false;
|
||||
Locator.init(inputImageWrapper, config, function() {
|
||||
self.postMessage({'event': 'initialized'});
|
||||
});
|
||||
} else if (e.data.cmd === 'locate') {
|
||||
inputImageWrapper.data = new Uint8Array(e.data.buffer);
|
||||
Locator.locate(function(result) {
|
||||
self.postMessage({'event': 'located', result: result, buffer : inputImageWrapper.data}, [inputImageWrapper.data.buffer]);
|
||||
});
|
||||
}
|
||||
};
|
||||
}).toString() + ')("' + quaggaAbsoluteUrl + '");'
|
||||
], {type : 'text/javascript'});
|
||||
|
||||
/* jshint ignore:end */
|
||||
return window.URL.createObjectURL(blob);
|
||||
}
|
||||
|
||||
|
||||
return {
|
||||
init : function(inputImageWrapper, config, cb) {
|
||||
_config = config;
|
||||
@@ -6859,6 +6907,7 @@ define('config',[],function(){
|
||||
locator: {
|
||||
halfSample: true,
|
||||
useWorker: true,
|
||||
scriptName: 'quagga.js',
|
||||
showCanvas: false,
|
||||
showPatches: false,
|
||||
showFoundPatches: false,
|
||||
@@ -7296,7 +7345,8 @@ function(Code128Reader, EANReader, InputStream, ImageWrapper, BarcodeLocator, Ba
|
||||
Reader: {
|
||||
EANReader : EANReader,
|
||||
Code128Reader : Code128Reader
|
||||
}
|
||||
},
|
||||
Locator: BarcodeLocator
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
Vendored
-3
File diff suppressed because one or more lines are too long
+50
-2
@@ -478,9 +478,13 @@ function(ImageWrapper, CVUtils, Rasterizer, Tracer, skeletonizer, ArrayHelper, I
|
||||
}
|
||||
|
||||
function initWorker(cb) {
|
||||
var tmpData;
|
||||
var tmpData,
|
||||
blobURL;
|
||||
|
||||
blobURL = generateWorkerBlob();
|
||||
_worker = new Worker(blobURL);
|
||||
URL.revokeObjectURL(blobURL);
|
||||
|
||||
_worker = new Worker('../src/worker_locator.js');
|
||||
tmpData = _inputImageWrapper.data;
|
||||
_inputImageWrapper.data = null; // do not send the data along
|
||||
_worker.postMessage({cmd: 'init', inputImageWrapper: _inputImageWrapper, config: _config});
|
||||
@@ -496,6 +500,50 @@ function(ImageWrapper, CVUtils, Rasterizer, Tracer, skeletonizer, ArrayHelper, I
|
||||
};
|
||||
}
|
||||
|
||||
function generateWorkerBlob() {
|
||||
var blob,
|
||||
quaggaAbsoluteUrl,
|
||||
scripts = document.getElementsByTagName('script'),
|
||||
regex = new RegExp('\/' + _config.scriptName + '$');
|
||||
|
||||
quaggaAbsoluteUrl = Array.prototype.slice.apply(scripts).filter(function(script) {
|
||||
return script.src && script.src.match(regex);
|
||||
}).map(function(script) {
|
||||
return script.src;
|
||||
})[0];
|
||||
|
||||
/* jshint ignore:start */
|
||||
blob = new Blob(['(' +
|
||||
(function(scriptUrl){
|
||||
importScripts(scriptUrl);
|
||||
var inputImageWrapper,
|
||||
config,
|
||||
Locator = Quagga.Locator;
|
||||
|
||||
self.onmessage = function(e) {
|
||||
if (e.data.cmd === 'init') {
|
||||
inputImageWrapper = e.data.inputImageWrapper;
|
||||
config = e.data.config;
|
||||
|
||||
config.useWorker = false;
|
||||
Locator.init(inputImageWrapper, config, function() {
|
||||
self.postMessage({'event': 'initialized'});
|
||||
});
|
||||
} else if (e.data.cmd === 'locate') {
|
||||
inputImageWrapper.data = new Uint8Array(e.data.buffer);
|
||||
Locator.locate(function(result) {
|
||||
self.postMessage({'event': 'located', result: result, buffer : inputImageWrapper.data}, [inputImageWrapper.data.buffer]);
|
||||
});
|
||||
}
|
||||
};
|
||||
}).toString() + ')("' + quaggaAbsoluteUrl + '");'
|
||||
], {type : 'text/javascript'});
|
||||
|
||||
/* jshint ignore:end */
|
||||
return window.URL.createObjectURL(blob);
|
||||
}
|
||||
|
||||
|
||||
return {
|
||||
init : function(inputImageWrapper, config, cb) {
|
||||
_config = config;
|
||||
|
||||
@@ -26,6 +26,7 @@ define(function(){
|
||||
locator: {
|
||||
halfSample: true,
|
||||
useWorker: true,
|
||||
scriptName: 'quagga.js',
|
||||
showCanvas: false,
|
||||
showPatches: false,
|
||||
showFoundPatches: false,
|
||||
|
||||
+2
-1
@@ -224,6 +224,7 @@ function(Code128Reader, EANReader, InputStream, ImageWrapper, BarcodeLocator, Ba
|
||||
Reader: {
|
||||
EANReader : EANReader,
|
||||
Code128Reader : Code128Reader
|
||||
}
|
||||
},
|
||||
Locator: BarcodeLocator
|
||||
};
|
||||
});
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
/* jshint undef: true, unused: true, browser:true, devel: true */
|
||||
/* global importScripts, self, Locator */
|
||||
|
||||
importScripts('../dist/locator.js');
|
||||
var inputImageWrapper,
|
||||
config;
|
||||
|
||||
self.onmessage = function(e) {
|
||||
if (e.data.cmd === 'init') {
|
||||
inputImageWrapper = e.data.inputImageWrapper;
|
||||
config = e.data.config;
|
||||
|
||||
config.useWorker = false;
|
||||
Locator.init(inputImageWrapper, config, function() {
|
||||
self.postMessage({'event': 'initialized'});
|
||||
});
|
||||
} else if (e.data.cmd === 'locate') {
|
||||
inputImageWrapper.data = new Uint8Array(e.data.buffer);
|
||||
Locator.locate(function(result) {
|
||||
self.postMessage({'event': 'located', result: result, buffer : inputImageWrapper.data}, [inputImageWrapper.data.buffer]);
|
||||
});
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user