ImageDecoder: метод decode()
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает в некоторых из наиболее широко используемых браузеров.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.
Примечание: Эта функция доступна в посвященных веб-воркерах.
Метод decode() интерфейса ImageDecoder добавляет в очередь управляющее сообщение для декодирования кадра изображения.
Синтаксис
decode() decode(options)
Параметры
optionsНеобязательно-
Объект, содержащий следующие члены:
frameIndexНеобязательно-
Целое число, представляющее индекс кадра для декодирования. По умолчанию
0(первый кадр). completeFramesOnlyНеобязательно-
Значение типа
booleanпо умолчаниюtrue. Когдаfalseуказывает, что для прогрессивных изображений декодер может выдать изображение с уменьшенной детализацией. Приfalse, промис, возвращаемыйdecode(), разрешится ровно один раз для каждого нового уровня детализации.
Возвращаемое значение
Промис promise, который разрешается объектом, содержащим следующие члены:
image-
VideoFrame, содержащий декодированное изображение. complete-
Значение типа
boolean, еслиtrueуказывает, чтоimageсодержит окончательный вывод с полной детализацией.
Исключения
Если произошла ошибка, промис разрешится следующим исключением:
-
InvalidStateErrorDOMException -
Возвращается, если выполняются следующие условия:
-
closeимеет значение true, что означает, что методclose()уже был вызван. - Запрашиваемого кадра не существует.
-
Примеры
Синхронное декодирование завершенного кадра изображения
В следующем примере декодируется второй кадр (с индексом 1) и выводится полученный VideoFrame в консоль.
let result = await imageDecoder.decode({ frameIndex: 1 });
console.log(result.image);
Частичное декодирование прогрессивного кадра изображения
В следующем примере декодируется первый кадр до тех пор, пока он не станет полным:
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 |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
decode |
94 | 94 | 133 | 80 | Нет | 94 | 133 | 66 | Нет | 17.0 | 94 |
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/ImageDecoder/decode