ImageDecoder: Methode decode()

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

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 des ImageDecoder-Interfaces sendet eine Steuerungsmeldung, um den Frame eines Bildes zu dekodieren.

Syntax

js
decode()
decode(options)

Parameter

options Optional

Ein Objekt, das die folgenden Mitglieder enthält:

frameIndex Optional

Ein ganzzahliger Wert, der den Index des zu dekodierenden Frames darstellt. Standardmäßig 0 (der erste Frame).

completeFramesOnly Optional

Ein boolean, der standardmäßig auf true gesetzt ist. Wenn false, deutet dies darauf hin, dass der Decoder bei progressiven Bildern ein Bild mit reduzierten Details ausgeben kann. Wenn false, wird das von decode() zurückgegebene Versprechen genau einmal für jede neue Detailstufe aufgelöst.

Rückgabewert

Ein promise, das sich mit einem Objekt auflöst, das die folgenden Mitglieder enthält:

image

Ein VideoFrame, das das dekodierte Bild enthält.

complete

Ein boolean, wenn true, zeigt an, dass image die endgültige Ausgabe in voller Detailtiefe enthält.

Ausnahmen

Wenn ein Fehler auftritt, wird das Versprechen mit der folgenden 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 Frame existiert nicht.

Beispiele

Synchrone Dekodierung eines vollständigen Bild-Frames

Das folgende Beispiel dekodiert den zweiten Frame (bei Index 1) und gibt das resultierende VideoFrame in der Konsole aus.

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

Partielle Dekodierung eines progressiven Bild-Frames

Das folgende Beispiel dekodiert den ersten Frame 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 is won't needlessly spin.
  let result = await imageDecode.decode({ completeFramesOnly: false });

  // Do something with `result.image`.

  complete = result.complete;
}

Spezifikationen

Specification
WebCodecs
# dom-imagedecoder-decode

Browser-Kompatibilität

BCD tables only load in the browser