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
- 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
overlayvon FFmpeg hat beispielsweise eine Optionalphamit den Wertenstraight,premultipliedundauto. - 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.
- 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: Beiflattenvon sharp ist der Standard beispielsweise Schwarz. - 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_ksvon FFmpeg hat eine Optionalpha_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.
- Robot zur Bildgrößenänderung: Hintergrund, Alpha und Reduzierung auf eine Ebene
- Robot zur Hintergrundentfernung
Entdecken Sie Transloadits Möglichkeiten zur Bildverarbeitung
Quellen
- Spezifikation für Portable Network Graphics (PNG), dritte Ausgabe: Alpha-Darstellung und tRNS
- W3C-Compositing und Farbmischung Level 1: einfaches Alpha-Compositing
- HTML-Standard: vormultipliziertes Alpha und der 2D-Rendering-Kontext
- libvips-API: vips_resize (Alpha wird nicht vormultipliziert)
- FFmpeg-Filterdokumentation: Alpha-Option für overlay
- WebP-Containerspezifikation: einfache und erweiterte Dateiformate
- GIF89a-Spezifikation: Transparenzindex der Graphic Control Extension
- MDN: Leitfaden zu Bilddateitypen und Bildformaten (Alpha-Unterstützung nach Format)
- ImageMagick-Beispiele: gängige Bildformate (JPEG und Transparenz)
- sharp-API: flatten
- Apple Support: über Apple ProRes (Alphakanal-Unterstützung nach Codec)
- MDN: Leitfaden zu Web-Videocodecs (Alpha bei VP8 und VP9, Safari-Unterstützung)
- FFmpeg-Codec-Dokumentation: ProRes-Encoder alpha_bits