ImageDecoder: decode() 方法
注意: 此功能在 专用 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
-
如果以下任一条件适用,则返回
close
为true
,表示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 表格仅在浏览器中加载