【发布时间】:2017-10-03 03:39:21
【问题描述】:
有没有办法在 Web Worker 中使用 Canvas 元素?我想在 Web Worker 中执行 canvas.toBlob 以降低图像质量。
- 我知道只有 ImageData 可以传递给 Web Worker,这对我没有帮助,我需要画布,而不是 canvasContext 来执行 canvas.toBlob
- 我知道 Firefox 中的实验性离屏 Canvas,但我也希望在其他浏览器中获得支持。
可能通过https://github.com/substack/webworkify webworkify 以某种方式进行?哪个允许在 web worker 中使用其他库?
我要么需要将 canvas 元素传递给 Web Worker,要么在 Web Worker 内部创建一个 canvas 元素,或者找到降低图像质量的替代方法。
【问题讨论】:
-
试试 OffscreenCanvas developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas
-
谢谢,但请注意我的问题前面列出的第二点
-
目前还没有跨浏览器的方式来让 web worker 操作 DOM
-
你也可以使用
canvas.toDataURL("image/jpeg",quality)为什么要在worker上做,为worker启动一个新的上下文,解析javascript,传递像素数据可能需要更长的时间,然后是 jpeg 编码的非常慢的 javascript 实现,等等。到编码数据返回时,您可能已经使用本机调用完成了十几次。 -
有了 canvas.toDataURL 我仍然需要画布。我想在网络工作者中执行此操作,因为我递归调用它以创建一个函数,该函数将图像质量降低到刚好适合某个文件大小限制但不超过需要的程度,为此我创建了一个通常找到的算法2 到 5 步即可获得最佳质量...
标签: javascript canvas html5-canvas web-worker