Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

ImageDecoder: decode()-Methode

Eingeschränkt verfügbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Hinweis: Diese Funktion ist in Dedicated Web Workers verfügbar.

Die decode()-Methode der ImageDecoder-Schnittstelle stellt eine Steuerungsnachricht für das Dekodieren des Bildrahmens in die Warteschlange.

Syntax

js
decode()
decode(options)

Parameter

options Optional

Ein Objekt, das die folgenden Mitglieder enthält:

frameIndex Optional

Ein Integer, der den Index des zu dekodierenden Rahmens darstellt. Standardmäßig 0 (der erste Rahmen).

completeFramesOnly Optional

Ein Boolean, der standardmäßig auf true gesetzt ist. Wenn true, wird das von der Methode zurückgegebene Promise nur aufgelöst, wenn das Bild vollständig dekodiert ist. Wenn false, wird die Methode ein neues Promise zurückgeben, das möglicherweise mit einem teilweise dekodierten Bild aufgelöst wird. Die Methode kann wiederholt aufgerufen werden, bis result.complete wahr ist. Jeder Schritt liefert ein Bild mit dem nächsten verfügbaren Detailgrad.

Rückgabewert

Ein Promise, das mit einem Objekt aufgelöst wird, das die folgenden Mitglieder enthält:

image

Ein VideoFrame, das das dekodierte Bild enthält.

complete

Ein Boolean, der angibt, ob true die endgültige Ausgabe in voller Detailtiefe enthält.

Ausnahmen

Wenn ein Fehler auftritt, wird das Promise mit folgender Ausnahme aufgelöst:

InvalidStateError DOMException

Wird zurückgegeben, wenn eine der folgenden Bedingungen zutrifft:

  • close ist wahr, was bedeutet, dass close() bereits aufgerufen wurde.
  • Der angeforderte Rahmen existiert nicht.

Beispiele

Synchrones Dekodieren eines abgeschlossenen Bildrahmens

Das folgende Beispiel dekodiert den zweiten Rahmen (bei Index 1) und gibt den resultierenden VideoFrame in der Konsole aus.

js
let result = await imageDecoder.decode({ frameIndex: 1 });
console.log(result.image);

Teilweises Dekodieren eines progressiven Bildrahmens

Das folgende Beispiel dekodiert den ersten Rahmen wiederholt, bis er vollständig ist:

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 won't needlessly spin.
  let result = await imageDecoder.decode({ completeFramesOnly: false });

  // Do something with `result.image`.

  complete = result.complete;
}

Spezifikationen

Spezifikation
WebCodecs
# dom-imagedecoder-decode

Browser-Kompatibilität