Spec-Zone.ru › Web APIs

ImageDecoder

Ограниченная доступность

Эта функция не относится к Baseline, поскольку она не работает в некоторых из наиболее широко используемых браузеров.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.

Примечание: Эта функция доступна в посвященных веб-воркерах.

Интерфейс ImageDecoder API WebCodecs предоставляет способ распаковки и декодирования закодированных данных изображения.

Конструктор

ImageDecoder()

Создает новый объект ImageDecoder.

Свойства экземпляра

ImageDecoder.complete Только для чтения

Возвращает значение булевого типа, указывающее, полностью ли буферизованы закодированные данные.

ImageDecoder.completed Только для чтения

Возвращает Promise, который разрешается, когда complete принимает значение true.

ImageDecoder.tracks Только для чтения

Возвращает объект ImageTrackList, перечисляющий доступные треки и предоставляющий метод для выбора трека для декодирования.

ImageDecoder.type Только для чтения

Возвращает строку, отражающую MIME-тип, настроенный во время создания.

Статические методы

ImageDecoder.isTypeSupported()

Указывает, поддерживается ли указанный MIME-тип для распаковки и декодирования.

Методы экземпляра

ImageDecoder.close()

Прекращает все текущие задачи и освобождает системные ресурсы.

ImageDecoder.decode()

Вставляет управляющее сообщение для декодирования кадра изображения.

ImageDecoder.reset()

Прерывает все ожидающие операции decode().

Примеры

Учитывая элемент <canvas>:

<canvas></canvas>

следующий код декодирует и отображает анимированное изображение на этом холсте:

let imageDecoder = null;
let imageIndex = 0;

function renderImage(result) {
  const canvas = document.querySelector("canvas");
  const canvasContext = canvas.getContext("2d");

  canvasContext.drawImage(result.image, 0, 0);

  const track = imageDecoder.tracks.selectedTrack;

  // We check complete here since `frameCount` won't be stable until all
  // data has been received. This may cause us to receive a RangeError
  // during the decode() call below which needs to be handled.
  if (imageDecoder.complete) {
    if (track.frameCount === 1) return;

    if (imageIndex + 1 >= track.frameCount) imageIndex = 0;
  }

  // Decode the next frame ahead of display so it's ready in time.
  imageDecoder
    .decode({ frameIndex: ++imageIndex })
    .then((nextResult) =>
      setTimeout(() => {
        renderImage(nextResult);
      }, result.image.duration / 1000.0),
    )
    .catch((e) => {
      // We can end up requesting an imageIndex past the end since
      // we're using a ReadableStream from fetch(), when this happens
      // just wrap around.
      if (e instanceof RangeError) {
        imageIndex = 0;
        imageDecoder.decode({ frameIndex: imageIndex }).then(renderImage);
      } else {
        throw e;
      }
    });
}

function decodeImage(imageByteStream) {
  imageDecoder = new ImageDecoder({ data: imageByteStream, type: "image/gif" });
  imageDecoder.decode({ frameIndex: imageIndex }).then(renderImage);
}

fetch("fancy.gif").then((response) => decodeImage(response.body));

Спецификации

Спецификация
WebCodecs
# imagedecoder-interface

Совместимость браузеров

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet WebView Android
ImageDecoder 94 94 133 80 Нет 94 133 66 Нет 17.0 94
ImageDecoder 94 94 133 80 Нет 94 133 66 Нет 17.0 94
close 94 94 133 80 Нет 94 133 66 Нет 17.0 94
complete 94 94 133 80 Нет 94 133 66 Нет 17.0 94
completed 94 94 133 80 Нет 94 133 66 Нет 17.0 94
decode 94 94 133 80 Нет 94 133 66 Нет 17.0 94
isTypeSupported_static 94 94 133 80 Нет 94 133 66 Нет 17.0 94
reset 94 94 133 80 Нет 94 133 66 Нет 17.0 94
tracks 94 94 133 80 Нет 94 133 66 Нет 17.0 94
type 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API