【发布时间】:2018-06-09 08:24:06
【问题描述】:
我有一个使用javascript 解码 jpeg 图像的网络工作者。
然后它以画布图像数据接受的相同格式将该图像的像素数据传递给主线程。
目标是使用标准将解码后的像素数组绘制到画布元素上:
context.putImageData(imgData, 0, 0);
这似乎很简单,但是我能弄清楚如何做到这一点的唯一方法是对从工作人员接收到的数据的长度进行循环,并将像素值一次复制 1 到 imgData.data 数组中像这样:
var workerData = //Data received from the worker;
for(i=0;i<workerData.length;i++){
imgData.data[i] = workerData[i];
}
我试图像这样复制数组:
imgData.data = workerData.slice();
但是,在将 imageData 绘制到画布上时,它不会改变它的值。有没有更快或至少更理智的方法来做到这一点?
编辑:我从this post 发现您可以像这样使用 set:
var canvas = document.createElement('canvas');
var imageData = canvas.getContext('2d').createImageData(width, height);
imageData.data.set(myData);
而且效果很好!
【问题讨论】:
-
切片后再次调用
context.putImageData(imgData, 0, 0);... -
@JonasW。不幸的是,我试过了,但无论如何它都不会更新画布。
标签: javascript arrays html canvas