Der Alphakanal bei Grafiken

Mit Alphakanal meint man in der Computergrafik keinen Fernsehsender, sondern eine zusätzliche Farbinformation eines Bildes.

Und genau an der Stelle wird es schwammig, denn viele Definitionen beschreiben den Alpha-Wert als Transparenz, also die Festlegung, wie viel eines Hintergrundes (oder anderen Bildes) durch einen Pixel durchleuchten kann.

Sieht man sich aber Programmierschnittstellen an, müsste man den Wert eigentlich gegenteilig benennen, nämlich “Deckkraft” (auch “Opacity” genannt).

Da die additive Farbmischung mit den Farben rot grün und blau immer noch sehr häufig eingesetzt wird, bestehen viele Color - Objekte eben aus diesen RGB Tripel.
Wenn man von speziellen CAD-Lösungen und (witzigerweise) der Xlib mal absieht, sind das immer reine Byte-Werte, also von 0 für ganz dunkel/schwarz bis 255 für ganz hell.
Und daraus lassen sich dann 16777216 (also 16 Millionen) unterschiedliche Farben mit 24 Bits aufbauen.

Mit dem Alphakanal kommt nun ein weiterer Wert von 0-255 hinzu.

Der erste Streit ist die Frage, wo der Wert angesiedelt ist, also vorne oder hinten. ARGB (alpha-red-green-blue) und RGBA (red-green-blue-alpha) kommen dann zusätzlich noch in unterschiedlichen Byte-Reihenfolgen vor und finden sich dann in Dateiformaten durchaus in der Form von BGRA (blue-green-red-alpha) und ABGR (alpha-blue-green-red).

Doch was bedeutet nun A(lpha)?

Einst interpretierten meine Kollegen und ich selbst es als “Transparenz” und meinten in einem proprietären Grafikprojekt, dass 0 voll-deckend und 255 voll-durchsichtig bedeutet.
Das ist vor allem ein Vorteil für die Kompatibilität zu reinem RGB. Denn in der IT (und in auch jenem Projekt) sind ungenutzte Bits vorzüglich immer auf 0 gesetzt. Und wird ein RGB Tripel-Wert als 32-bit Wert gespeichert, wo die letzten 8 Bits dann nachträglich als Alpha gedeutet werden, so sind diese 0 und damit voll-deckend.
Das Windows Bitmap Format sei hier zum Vergleich genannt, wo Transparenz eigentlich nicht definiert ist, aber von Programmen mit hineingespeichert werden kann.

Moderner und heutiger Standard ist jedoch das Gegenteil, wo Alpha die Deckkraft darstellt, womit 0 voll-transparent und 255 voll-deckend bedeutet.
Und sowohl die meisten Programmierframeworks, als auch HTML und CSS sehen das genau so.

Folglich setzt auch das GATE-Projekt dieses zweite Schema um, obwohl mir offen gesagt das erstere (aus binären und historischen Gründen) mehr zusagen würde.

Fun-Fact am Rande:
Beim Laden einer Windows Bitmap prüft der Ladecode im GATE-Projekt, ob alle gelesenen Alpha-Werte gleich 0 sind und patcht diese in dem Fall auf 255, also volle Deckkraft. Somit werden alte Bilddateien, wie auch neuere mit Transparanz korrekt geladen.

Die Transparente Farbe

Einige Grafik-Dateiformate kennen keinen eigenen Alphakanal, wollen aber dennoch Bereiche als transparent definieren. Das GIF Format sei hier als Beispiel genannt.

Diese nutzen dann einen speziellen Farbpaletteneintrag, bei dem festgelegt wurde, dass eine ganz bestimmte RGB-Farbe als “transparent” zu behandeln sei, also nicht auf den Schirm gezeichnet werden darf.
Folglich sieht man dann an solchen Stellen den Hintergrund durchscheinen.

Das Windows Icon- und Cursor - Format kennt übrigens noch einen weiteren Zustand, nämlich eine Art invertierte Transparenz. Ein solches “inverses” Pixel zwingt das System dazu das Hintergrundpixel zu scannen und dessen Farbe mit der Farbe des Icons zu XORen. Wird der Hintergrund mit einem weißen Icon-Pixel geXORt (pixel XOR 255), kommt also ein farbliches Negativbild an dieser Stelle heraus.


Wenn sich eine triviale Erkenntnis mit Dummheit in der Interpretation paart, dann gibt es in der Regel Kollateralschäden in der Anwendung.
frei zitiert nach A. Van der Bellen
... also dann paaren wir mal eine komplexe Erkenntnis mit Klugheit in der Interpretation!