【问题标题】:Decode JPEG in web worker在 Web Worker 中解码 JPEG
【发布时间】:2016-01-13 08:44:39
【问题描述】:

如何在网络工作者中解码 JPEG 以访问像素数据,而不包括解码 JPEG 的代码(由我自己或第 3 方编写),而是使用内置的浏览器 API。


我知道我可以在主线程中将 JPEG 渲染到画布上,读取像素数据,然后将其传递给工作人员(如果这是我想要的),但我正在专门研究解码 JPEG 的可能性工人。

我也知道我可以使用第三方库,但我想知道浏览器中是否有内置的东西可以做到这一点,因为必须发送与浏览器功能相同的代码似乎很奇怪。

【问题讨论】:

  • 你可以像这样使用一些库:github.com/notmasteryet/jpgjs
  • 到目前为止你尝试过什么? JPEG 格式已记录在案,并且有可以处理该问题的库 - 您可以通过 google 搜索获得这些库。
  • @Tomáš 了解有库,但想知道是否有办法在工作人员中使用内置 API。我已将这一点添加到问题中。
  • 我知道的唯一图像处理 API 是 canvas 并且已经被问及回答:stackoverflow.com/q/1864756/607407

标签: javascript jpeg web-worker emscripten


【解决方案1】:

tl;dr: No.

编辑后,是否可以使用内置 API 的问题(目前只有canvas)答案是否定的。您不能在 Web Worker 中创建 HTMLElements,包括 canvas,因为它们是 GUI 组件,并且大多数 GUI 框架拒绝允许 GUI 线程之外的 GUI 组件实例化。

这当然很不幸,这意味着根本无法使用原生 API (CanvasRenderingContext2D) 进行任何图像操作。

我现在回答的问题已经被问及并回答了:Web Workers and Canvas

我建议优先考虑这个问题以进行更新 - 我也希望将来可以在网络工作者中进行图像处理。

【讨论】:

  • 感谢您的回答。只是为了澄清一下,这个问题并不是我要问的......他们问你是否可以从网络工作者访问画布,如果可能的话,它会提供 a 浏览器 API,你可以在其中解码JPEG。我在问(知道您无法访问画布),工作人员中是否有 any 浏览器 API 可用,您可以在其中解码 JPEG。
  • 答案仍然没有。浏览器中唯一的图像处理 API 可以通过canvas.getContext 访问。如果您更彻底地阅读了答案,您会看到one explicitly mentioning future possibilities of image manipulation API in web workers。但是现在,答案是否定的,您可以在我的答案中详细了解该答案。
  • 我还明确指出,canvas 只是我所知道的图像处理 API,所以我不明白您为什么进一步询问 您所在的工作人员中是否有任何浏览器 API可以解码 JPEG - 我想我再清楚不过了,没有这样的 API。如果您要再次提出相同的问题,您将不会得到不同的答案,对不起。
  • 我认为我没有进一步问...“我现在回答的问题已经被问及并回答了”向我暗示你在说Web Workers and Canvas,这是同一个问题.我声称它们是不同的问题。我怀疑我在吹毛求疵,现在想想,这可能不是很有建设性。
  • @TomášZato-ReinstateMonica 您好,我在“Web Workers 和 Canvas”问题中回答了您将现在如何在 Web Worker 中使用画布的问题。鉴于现在可以使用 canvas-in-worker(在某些浏览器中),现在的问题是:我们将调用哪些 canvas API 来解码 JPG 图像(假设我们有一个包含图像数据的二进制类型数组)?跨度>
猜你喜欢
  • 1970-01-01
  • 2015-10-11
  • 1970-01-01
  • 2017-06-14
  • 1970-01-01
  • 1970-01-01
  • 2018-04-15
  • 2010-12-06
相关资源
最近更新 更多