ImageDecoder: phương thức decode()
Khả dụng hạn chế
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Note: This feature is available in Dedicated Web Workers.
Phương thức decode() của giao diện ImageDecoder thêm một thông điệp điều khiển vào hàng đợi để giải mã một khung của hình ảnh.
Cú pháp
decode()
decode(options)
Tham số
optionsOptional-
Một đối tượng chứa các thành viên sau:
frameIndexOptional-
Một số nguyên biểu thị chỉ mục của khung cần giải mã. Mặc định là
0(khung đầu tiên). completeFramesOnlyOptional-
Một
booleanmặc định làtrue. Khi làtrue, Promise được trả về bởi phương thức chỉ được giải quyết khi hình ảnh được giải mã đầy đủ. Khi làfalse, phương thức sẽ trả về một Promise mới có thể được giải quyết với một hình ảnh được giải mã một phần. Phương thức có thể được gọi lặp đi lặp lại cho đến khiresult.completelà true, với mỗi bước cung cấp một hình ảnh với mức độ chi tiết tiếp theo có sẵn.
Giá trị trả về
Một promise được giải quyết với một đối tượng chứa các thành viên sau:
image-
Một
VideoFramechứa hình ảnh đã giải mã. complete-
Một
boolean, nếu làtruecho biếtimagechứa đầu ra chi tiết đầy đủ cuối cùng.
Ngoại lệ
Nếu xảy ra lỗi, promise sẽ được giải quyết với ngoại lệ sau:
InvalidStateErrorDOMException-
Được trả về nếu bất kỳ điều kiện nào sau đây áp dụng:
closelà true, nghĩa làclose()đã được gọi.- Khung được yêu cầu không tồn tại.
Ví dụ
>Giải mã đồng bộ một khung hình ảnh đã hoàn thành
Ví dụ sau đây giải mã khung thứ hai (tại chỉ mục 1) và in VideoFrame kết quả ra console.
let result = await imageDecoder.decode({ frameIndex: 1 });
console.log(result.image);
Giải mã từng phần một khung hình ảnh lũy tiến
Ví dụ sau đây giải mã khung đầu tiên lặp đi lặp lại cho đến khi hoàn thành:
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 won't needlessly spin.
let result = await imageDecoder.decode({ completeFramesOnly: false });
// Do something with `result.image`.
complete = result.complete;
}
Thông số kỹ thuật
| Thông số kỹ thuật |
|---|
| WebCodecs> # dom-imagedecoder-decode> |