ImageDecoder: decode() 方法
注意:此功能在 专用 Web Workers 中可用。
ImageDecoder 接口的 decode() 方法用于将一个控制消息加入队列,以解码图像的某一帧。
语法
js
decode()
decode(options)
参数
options可选-
包含以下成员的对象
frameIndex可选-
一个整数,表示要解码的帧的索引。默认为
0(第一帧)。 completeFramesOnly可选-
一个
boolean值,默认为true。当设置为false时,表示对于渐进式图像,解码器可能会输出一个细节程度较低的图像。当设置为false时,decode()返回的 Promise 将针对每个新的细节级别解析一次。
返回值
一个 Promise,它会解析为一个包含以下成员的对象:
图片-
一个
VideoFrame,包含已解码的图像。 完成-
一个
boolean值,如果为true,则表示image包含最终的完整细节输出。
异常
如果发生错误,Promise 将会解析为以下异常
InvalidStateErrorDOMException-
当满足以下任一条件时返回
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 |
浏览器兼容性
加载中…