可以将CanvasPixelArray
获得的 via发送getImageData
到工作脚本,并让工作脚本在其后台线程中操作像素,并最终将操作后的像素数组发回。
但是,我使用的是原生画布绘图功能,例如drawImage
. 这些drawImage
调用当前正在阻塞 UI 线程。这会导致按钮重绘缓慢,并且在单击按钮时会出现明显的延迟,仅举几个缺点。(编辑:现在可以使用 来完成一个小的改进ctx.imageSmoothingEnabled = false
,至少在带有webkit
前缀的 WebKit 上。)
我想使用 Web Workers 将绘图从主线程移动到后台线程。但是,我似乎无法将画布或上下文发送给工作人员。
我确实在 MDN 上找到了这个通知:
注意:像往常一样,后台线程(包括工作线程)不能操作 DOM。如果后台线程采取的操作需要导致对 DOM 的更改,他们应该将消息发回给他们的创建者来完成这项工作。
但我想保留 DOM 原样;我只是想在画布元素上画东西。这可能吗,还是 Web Workers 真的只允许计算而不允许绘制?
(或者是否可以使用诸如drawImage
操作 aCanvasPixelArray
而不是在画布上绘图之类的功能?)