Skip to content
Snippets Groups Projects
Commit acca33cf authored by Neil Gershenfeld's avatar Neil Gershenfeld
Browse files

starting compare worker

parent 903f5933
Branches
No related tags found
No related merge requests found
...@@ -36,11 +36,14 @@ var inputs = { ...@@ -36,11 +36,14 @@ var inputs = {
image:{type:'RGBA', image:{type:'RGBA',
event:function(evt){ event:function(evt){
var ctx = mod.img.getContext("2d") var ctx = mod.img.getContext("2d")
var lastctx = mod.lastimg.getContext("2d")
lastctx.canvas.width = ctx.canvas.width
lastctx.canvas.height = ctx.canvas.height
lastctx.drawImage(mod.img,0,0)
ctx.canvas.width = evt.detail.width ctx.canvas.width = evt.detail.width
ctx.canvas.height = evt.detail.height ctx.canvas.height = evt.detail.height
ctx.putImageData(evt.detail,0,0) ctx.putImageData(evt.detail,0,0)
mod.pxtext.nodeValue = evt.detail.width+' x '+evt.detail.height+' px' compare_images()
convert_image()
}}} }}}
// //
// outputs // outputs
...@@ -81,6 +84,11 @@ var interface = function(div){ ...@@ -81,6 +84,11 @@ var interface = function(div){
var canvas = document.createElement('canvas') var canvas = document.createElement('canvas')
mod.img = canvas mod.img = canvas
// //
// off-screen last image canvas
//
var canvas = document.createElement('canvas')
mod.lastimg = canvas
//
// view button // view button
// //
var btn = document.createElement('button') var btn = document.createElement('button')
...@@ -139,12 +147,21 @@ function timeout() { ...@@ -139,12 +147,21 @@ function timeout() {
outputs.trigger.event() outputs.trigger.event()
setTimeout(timeout,parseFloat(mod.time.value)*1000) setTimeout(timeout,parseFloat(mod.time.value)*1000)
} }
function convert_image() { function compare_images() {
// mod.change.nodeValue = Date.now()
// preview var blob = new Blob(['('+worker.toString()+'())'])
// var url = window.URL.createObjectURL(blob)
var webworker = new Worker(url)
webworker.addEventListener('message',function(evt) {
window.URL.revokeObjectURL(url)
var h = mod.img.height var h = mod.img.height
var w = mod.img.width var w = mod.img.width
/*
var buf = new Uint8ClampedArray(evt.data.buffer)
var imgdata = new ImageData(buf,w,h)
var ctx = mod.img.getContext("2d")
ctx.putImageData(imgdata,0,0)
*/
if (w > h) { if (w > h) {
var x0 = 0 var x0 = 0
var y0 = mod.canvas.height*.5*(1-h/w) var y0 = mod.canvas.height*.5*(1-h/w)
...@@ -160,26 +177,29 @@ function convert_image() { ...@@ -160,26 +177,29 @@ function convert_image() {
var ctx = mod.canvas.getContext("2d") var ctx = mod.canvas.getContext("2d")
ctx.clearRect(0,0,mod.canvas.width,mod.canvas.height) ctx.clearRect(0,0,mod.canvas.width,mod.canvas.height)
ctx.drawImage(mod.img,x0,y0,wd,hd) ctx.drawImage(mod.img,x0,y0,wd,hd)
webworker.terminate()
})
var ctx = mod.img.getContext("2d")
var img = ctx.getImageData(0,0,mod.img.width,mod.img.height)
var ctx = mod.lastimg.getContext("2d")
var lastimg = ctx.getImageData(0,0,mod.img.width,mod.img.height)
var t = parseFloat(mod.threshold.value)
// //
// convert and save // transfer?
// //
mod.img.toBlob(function(blob){ webworker.postMessage({
var url = URL.createObjectURL(blob) height:mod.img.height,width:mod.img.width,threshold:t,
var link = document.createElement('a') buffer:img.data.buffer,lastbuffer:lastimg.data.buffer})
link.download = mod.nametext.value
link.href = url
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
URL.revokeObjectURL(url)
},'image/png')
} }
function update_info() { function worker() {
mod.dpi = parseFloat(mod.dpitext.value) self.addEventListener('message',function(evt) {
mod.mmtext.nodeValue = (25.4*mod.img.width/mod.dpi).toFixed(3) var h = evt.data.height
+' x '+(25.4*mod.img.height/mod.dpi).toFixed(3)+' mm' var w = evt.data.width
mod.intext.nodeValue = (mod.img.width/mod.dpi).toFixed(3) var t = evt.data.threshold
+' x '+(mod.img.height/mod.dpi).toFixed(3)+' in' var buf = new Uint8ClampedArray(evt.data.buffer)
var lastbuf = new Uint8ClampedArray(evt.data.lastbuffer)
self.postMessage({buffer:buf.buffer})
})
} }
// return values // return values
// //
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment