ImageDecoder: decode() 方法

有限可用性

此功能不是基本功能,因为它在一些使用最广泛的浏览器中无法正常工作。

安全上下文: 此功能仅在 安全上下文 (HTTPS) 中可用,在一些或所有 支持浏览器 中可用。

实验性: 这是 实验性技术
在生产环境中使用之前,请仔细查看 浏览器兼容性表

注意: 此功能在 专用 Web 工作线程 中可用。

decode()ImageDecoder 接口的方法,它将控制消息排队以解码图像的帧。

语法

js
decode()
decode(options)

参数

options 可选

包含以下成员的对象

frameIndex 可选

表示要解码的帧索引的整数。默认为 0(第一帧)。

completeFramesOnly 可选

一个 boolean,默认为 true。当为 false 时,表示对于渐进式图像,解码器可能会输出细节减少的图像。当为 false 时,decode() 返回的承诺将针对每个新的细节级别解析一次。

返回值

一个 promise,它解析为包含以下成员的对象

image

一个 VideoFrame,包含解码后的图像。

complete

一个 boolean,如果为 true,则表示 image 包含最终的完整细节输出。

异常

如果发生错误,承诺将解析为以下异常

InvalidStateError DOMException

如果以下任一条件适用,则返回

  • closetrue,表示 close() 已被调用。
  • 请求的帧不存在。

示例

同步解码已完成的图像帧

以下示例解码第二帧(索引为 1),并将生成的 VideoFrame 打印到控制台。

js
let result = await imageDecoder.decode({ frameIndex: 1 });
console.log(result.image);

渐进式图像帧的局部解码

以下示例重复解码第一帧,直到其完成

js
let complete = false;
while (!complete) {
  // The promise returned by `decode()` will only resolve when a new
  // level of detail is available or the frame is complete. I.e.,
  // calling `decode()` in a loop like this is won't needlessly spin.
  let result = await imageDecode.decode({ completeFramesOnly: false });

  // Do something with `result.image`.

  complete = result.complete;
}

规范

规范
WebCodecs
# dom-imagedecoder-decode

浏览器兼容性

BCD 表格仅在浏览器中加载