imageData を Web ワーカーに渡してから戻すコードを実行すると、Firefox は正常に動作しますが、Chrome で「Uncaught Error: DATA_CLONE_ERR: DOM Exception 25」が表示されます。
Google で検索すると、古いバージョンの Chrome が以前は機能していたことがわかりますか?
さらに確認したところ、画像データを送信する前にJSON.stringifyとJSON.parseを実行する必要があるように見えましたが、どこでも機能しなくなりました。FF 9 で動作するコードは次のとおりです。
image.js:
var myImageData = context.getImageData(0, 0, canvas.width, canvas.height).data;
var worker = new Worker("http://direct.link/helpers/worker.js");
worker.postMessage(myImageData);
worker.onmessage = function(event) {
var value = event.data;
switch (value.cmd){
case 'last':
//doing stuff
break;
default:
//doing stuff
});
}
worker.js:
addEventListener('message', function(event) {
var myImageData = event.data;
// doing stuff.
sendItBack(colors);
});
};
function sendItBack(colors){
each(colors, function(index, value){
self.postMessage(value);
});
self.postMessage({'cmd': 'last'});
}
この画像データをアプリと Web ワーカーの間で送受信するには、どのような方法を使用すればよいですか?
ありがとう!
編集:
通常の配列にコピーすると、Chrome が動作し始めます...
var newImageData = [];
for (var i=0,len=myImageData.length;i<len;++i) newImageData[i] = myImageData[i];
そのため、chrome は CanvasPixelArray をワーカーに渡すことはできませんが、通常の配列を渡すことはできます。しかし、Firefoxはできます。