mirror of
https://github.com/serratus/quaggaJS.git
synced 2026-08-13 05:31:37 +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']
|
all : ['Gruntfile.js', 'src/*.js']
|
||||||
},
|
},
|
||||||
requirejs : {
|
requirejs : {
|
||||||
quagga : {
|
compile : {
|
||||||
options : {
|
options : {
|
||||||
almond : true,
|
almond : true,
|
||||||
wrap : {
|
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" : {
|
"paths" : {
|
||||||
"typedefs" : "typedefs",
|
"typedefs" : "typedefs",
|
||||||
"glMatrix" : "vendor/glMatrix",
|
"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) {
|
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;
|
tmpData = _inputImageWrapper.data;
|
||||||
_inputImageWrapper.data = null; // do not send the data along
|
_inputImageWrapper.data = null; // do not send the data along
|
||||||
_worker.postMessage({cmd: 'init', inputImageWrapper: _inputImageWrapper, config: _config});
|
_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 {
|
return {
|
||||||
init : function(inputImageWrapper, config, cb) {
|
init : function(inputImageWrapper, config, cb) {
|
||||||
_config = config;
|
_config = config;
|
||||||
@@ -6859,6 +6907,7 @@ define('config',[],function(){
|
|||||||
locator: {
|
locator: {
|
||||||
halfSample: true,
|
halfSample: true,
|
||||||
useWorker: true,
|
useWorker: true,
|
||||||
|
scriptName: 'quagga.js',
|
||||||
showCanvas: false,
|
showCanvas: false,
|
||||||
showPatches: false,
|
showPatches: false,
|
||||||
showFoundPatches: false,
|
showFoundPatches: false,
|
||||||
@@ -7296,7 +7345,8 @@ function(Code128Reader, EANReader, InputStream, ImageWrapper, BarcodeLocator, Ba
|
|||||||
Reader: {
|
Reader: {
|
||||||
EANReader : EANReader,
|
EANReader : EANReader,
|
||||||
Code128Reader : Code128Reader
|
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) {
|
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;
|
tmpData = _inputImageWrapper.data;
|
||||||
_inputImageWrapper.data = null; // do not send the data along
|
_inputImageWrapper.data = null; // do not send the data along
|
||||||
_worker.postMessage({cmd: 'init', inputImageWrapper: _inputImageWrapper, config: _config});
|
_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 {
|
return {
|
||||||
init : function(inputImageWrapper, config, cb) {
|
init : function(inputImageWrapper, config, cb) {
|
||||||
_config = config;
|
_config = config;
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ define(function(){
|
|||||||
locator: {
|
locator: {
|
||||||
halfSample: true,
|
halfSample: true,
|
||||||
useWorker: true,
|
useWorker: true,
|
||||||
|
scriptName: 'quagga.js',
|
||||||
showCanvas: false,
|
showCanvas: false,
|
||||||
showPatches: false,
|
showPatches: false,
|
||||||
showFoundPatches: false,
|
showFoundPatches: false,
|
||||||
|
|||||||
+2
-1
@@ -224,6 +224,7 @@ function(Code128Reader, EANReader, InputStream, ImageWrapper, BarcodeLocator, Ba
|
|||||||
Reader: {
|
Reader: {
|
||||||
EANReader : EANReader,
|
EANReader : EANReader,
|
||||||
Code128Reader : Code128Reader
|
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