Was ist ein Alphakanal?

Ein Alphakanal speichert die Transparenz jedes Pixels getrennt von den Farbkanälen eines Bildes. Seine Werte stehen für vollständig transparente, vollständig deckende oder teilweise transparente Abdeckung.

So funktionieren Alphakanäle

Ein Alphawert gibt an, wie deckend ein Pixel ist. In PNG bedeutet null vollständig transparent und der maximale Abtastwert vollständig deckend. Zwischenwerte kennzeichnen eine teilweise Abdeckung, etwa entlang einer weichen Kante. Beim Compositing wird jedes Vordergrundpixel entsprechend seinem Alphawert mit dem dahinterliegenden Inhalt gemischt. Die Farbe neben Alpha kann auf zwei Arten gespeichert werden. Nicht vormultipliziertes Alpha, auch unassoziiertes Alpha genannt, speichert die volle Farbe neben ihrem Alphawert. Vormultipliziertes oder assoziiertes Alpha speichert die bereits mit Alpha multiplizierte Farbe. Das verkürzt die Compositing-Formel. Im Beispiel des HTML-Standards wird halbtransparentes Gelb als 255, 255, 0, 127 mit nicht vormultipliziertem Alpha und als 127, 127, 0, 127 mit vormultipliziertem Alpha dargestellt. PNG-Dateien speichern nicht vormultipliziertes Alpha, Ausgabe-Bitmaps von HTML-Canvas-2D verwenden vormultipliziertes Alpha, und TIFF kann beide Formen enthalten, wobei ein Tag die jeweilige Form angibt. Software muss wissen, welche Form sie liest. Die Umwandlung zwischen beiden ist bei nicht vollständig deckenden Pixeln verlustbehaftet.

Wichtige Fakten

  1. Was geht schief, wenn nicht vormultipliziertes und vormultipliziertes Alpha verwechselt werden? Weiche Kanten verändern ihre Farbe. Werden vormultiplizierte Daten beim Compositing als nicht vormultipliziert behandelt, wird ihre Farbe ein zweites Mal mit Alpha multipliziert. Teilweise transparente Kanten werden dadurch dunkel. Nicht vormultiplizierte Daten, die als vormultipliziert behandelt werden, werden mit voller Farbstärke addiert, sodass die Kanten zu hell wirken. Vollständig deckende Pixel sind in beiden Formen identisch. Deshalb erscheint der Fehler als Saum um freigestellte Motive und nicht in deckenden Flächen. Werkzeuge, die beide Formen akzeptieren, bieten dafür eine Einstellung: Der Filter overlay von FFmpeg hat beispielsweise eine Option alpha mit den Werten straight, premultiplied und auto.
  2. Warum bekommt ein freigestelltes Motiv nach einer Größenänderung einen Halo? Bei nicht vormultipliziertem Alpha speichert auch ein vollständig transparentes Pixel eine Farbe. Ein Filter, der jeden Kanal getrennt mittelt, mischt diese verborgene Farbe in benachbarte Randpixel. Die übliche Abhilfe besteht darin, zuerst vorzumultiplizieren, dann die Größe zu ändern und anschließend zurückzukonvertieren. Nicht jedes Werkzeug übernimmt das automatisch: libvips dokumentiert, dass seine Größenänderung Alpha nicht vormultipliziert, und fordert Aufrufende auf, dies vorher selbst zu tun.
  3. Welche Standbildformate erhalten Alpha? PNG speichert in seinen Typen für Echtfarbe mit Alpha und Graustufen mit Alpha einen vollständigen Alphakanal. Andernfalls kann es jedem Paletteneintrag einen eigenen Alphawert zuweisen oder eine einzelne Farbe als vollständig transparent markieren. WebP kann Alpha sowohl in verlustfreien als auch in verlustbehafteten Dateien speichern. Bei verlustbehafteten Dateien ist das erweiterte Dateilayout erforderlich. GIF hat keinen Alphakanal: Ein Palettenindex kann als transparent markiert werden, sodass jedes Pixel entweder gezeichnet oder übersprungen wird. JPEG hat keinen Alphakanal, und Konverter unterscheiden sich darin, wodurch sie Transparenz ersetzen. Manche setzen das Bild auf eine Hintergrundfarbe. Andere entfernen nur den Alphakanal, sodass die gespeicherte Farbe transparenter Pixel übrig bleibt: Die ImageMagick-Dokumentation beschreibt die JPEG-Ausgabe als gleichwertig mit -alpha off, wobei transparente Hintergründe häufig schwarz werden. Für ein vorhersehbares Ergebnis setzen Sie das Bild vor dem Encoding auf eine selbst gewählte Hintergrundfarbe. Auch für diesen Vorgang unterscheiden sich die Standardwerte: Bei flatten von sharp ist der Standard beispielsweise Schwarz.
  4. Zeigt die Erweiterung einer Videodatei, ob sie Alpha enthält? Nein. Alpha hängt vom Codec und dessen Profil ab. Unter den Apple-ProRes-Codecs unterstützen nur ProRes 4444 und ProRes 4444 XQ einen Alphakanal. Zwei Dateien mit derselben Erweiterung können sich daher unterscheiden. VP8 und VP9 können Alpha enthalten, doch laut MDN unterstützt Safari bei keinem der beiden Codecs Alphatransparenz. Möglicherweise muss der Encoder auch ausdrücklich angewiesen werden, Alpha zu schreiben: Der Encoder prores_ks von FFmpeg hat eine Option alpha_bits, deren Wert 0 die Alphaebene deaktiviert.

Wann Alphakanäle wichtig sind

Erhalten Sie Alpha, wenn Sie Logos, freigestellte Motive, Overlays oder transparente Animationen mit anderen Inhalten kombinieren. Ein Codec oder Format ohne Alpha-Unterstützung verwirft die Transparenz oder erfordert einen gewählten Hintergrund.

So hilft Transloadit bei Alphakanälen

Der Robot /image/resize von Transloadit ändert den Hintergrund transparenter Bilder standardmäßig in Weiß. Laut seiner Dokumentation muss background auf none gesetzt werden, um Transparenz zu erhalten. Das Ausgabeformat format muss weiterhin Alpha speichern können. Der Parameter alpha des Robots steuert den Kanal direkt. Wird has_transparency mit output_meta angefordert, wird gemeldet, ob ein Bild transparente Bereiche enthält. Das hilft bei der Wahl eines Ausgabeformats für jede Datei. Der Robot /image/bgremove entfernt Hintergründe und schreibt standardmäßig PNG.

Diese beiden Seiten geben nicht an, ob die Größenänderung nicht vormultipliziertes oder vormultipliziertes Alpha verwendet. Wenn die Kantenqualität wichtig ist, ändern Sie die Größe eines freigestellten Motivs mit weichen Kanten, platzieren Sie es auf einem kontrastierenden Hintergrund und prüfen Sie das Ergebnis, bevor Sie eine ganze Sammlung verarbeiten.

Entdecken Sie Transloadits Möglichkeiten zur Bildverarbeitung

Quellen

Machen Sie aus Medienwissen eine funktionierende Pipeline

Verbinden Sie Uploads, Verarbeitung, KI, Storage und Auslieferung über eine deklarative API – um Encoding-Stack, Skalierung und ständig wechselnde Formate müssen Sie sich nicht selbst kümmern.

Transloadit kostenlos ausprobieren