Paletten

Auswahl spezieller Farben

Diese Seite enthält eine (ältere) Zusammenfassung verschiedener in der Informatik verwendeter FarbSysteme. Die Seite ist mittlerweile überholt, da zu den meisten Kapiteln eigene Seiten erstellt wurden.
Farbe Farbe in der Informatik: RGB, CMY, HSB ...
Paletten Auswahl von "Index-Farben"
Addition Zusammensetzung von Farben aus mehreren Lichtquellen -> Details
TrueColor Darstellung von 17 Millionen Farben mit 24 Bit
HighColor Darstellung von 66000 Farben mit 16 Bit
CSS-Kurzform Darstellung von 4100 Farben mit 12 Bit
Websafe Darstellung von <256 Farben mit 8 Bit -> Details
VGA Darstellung von 16 Farben mit 4 Bit -> VGA
Live Index-Farben Palette (Farb-Tabelle) von eigenen Grafik-Dateien
ANSI-Escape Farben für die Text-Konsole

Paletten und Index-Farben

24 Bit RGB ↔ True Color

Farben werden in der Informatik in additiver Form als RGB-Werte definiert.
Dabei sind für jede Grundfarbe 8 Bit = 1 Byte Speicherplatz vorgesehen, das entspricht einer Zahl 0..255.
Durch Kombination der 3 Grundfarben (Rot, Grün, Blau) sind daher 256*256*256=16777216 unterschiedliche Farben darstellbar. Diese Technologie ist unter dem Namen TrueColor oder 24-Bit-Farben bekannt.
Das bedeutet lediglich, dass die Software mit so vielen Farben arbeiten kann. Die meisten praktisch verwendeten Monitore können zwar auf "TrueColor" eingestellt werden, erlauben jedoch nicht die praktische Unterscheidung so vieler Farbtöne.

Palette

Für besondere Zwecke wird eine Auswahl aus diesen Farben verwendet.
Solche "Paletten" enthalten eine kleinere Anzahl unterschiedlicher Farben, die jedoch alle aus der Menge der TrueColor Farben stammt.
Ihre Daten sind mit weniger Bit zu beschreiben.
Diese Einschränkung bringt für manche Anwendungen Vorteile. Man kann damit z.B. Speicherplatz sparen oder die Geschwindigkeit mancher Anwendungen erhöhen.

Speicherplatz

Die Einschränkung auf weniger Farben ist normalerweise mit einer Verringerung des Speicher-Aufwands verbunden.
Vorteil: Reduktion der Daten auf Speicher-Medien. Dieser Vorteil ist umso größer, je mehr Datenpunkte (Pixel) zu beschreiben sind, und je weniger Bit pro Pixel für die Farben verwendet werden - d.h. je weniger Farben die Palette umfasst.
Das gilt unabhängig davon, ob die Daten zusätzlich komprimiert werden.
Nachteil: Die Verarbeitung erfolgt immer in Standard RGB-Technik mit 24 Bit, daher muss jede Farb-Information sowohl beim Lesen als auch beim Schreiben der Speicherform umgerechnet werden.

Geschwindigkeit

Im Internet ist die Daten-Übertragung oft der langsamste Schritt, welcher die gesamte Geschwindigkeit bestimmt. Andererseits ist am PC viel ungenutzte Leistung verfügbar, d.h. der PC 'wartet' häufig auf Daten (Bilder).
In diesem Fall ist es sinnvoll, Paletten zu verwenden: Die geringere Größe der Daten erhöht die Geschwindigkeit, die zusätzlich notwendige Verarbeitung am PC ist dagegen nicht merkbar.

Farben-Anzahl

Für die meisten Anwendungen sind nur wenige Farben erforderlich, die allerdings oft wiederholt werden. Ein Beispiel sind die "Systemfarben", d.h. jene Farben, die vom Betriebssystem zur Darstellung von Menüleisten, Fenstern, Bedienungs-Elementen usw. verwendet werden.
Auch für Geschäfts-Grafik sind höchstens einige 100 Farben sinnvoll.
Für diese IT-Anwendungen werden daher Paletten eingesetzt.

Algorithmus oder Farbtabelle

Es gibt grundsätzlich zwei verschiedene Möglichkeiten, die Anzahl der Farben einer Palette zu verringern:
Man setzt einen Algorithmus ein, d.h. eine Rechen-Vorschrift. Man könnte z.B. nur jede zehnte der 24-Bit Farben verwenden.
Man setzt eine Farbtabelle ein. Für jede einzelne Farbe der Palette werden darin ihre RGB Farbwerte festgelegt.

Paletten mit Algorithmus

Die meist verwendeten Beispiele sind die 4096 Farben der CSS-Kurzform und die 216 → WebSafe Farben. In beiden Paletten sind die Farben systematisch über den darstellbaren Bereich verteilt.
Quelltext:
Die Einsparung bezieht sich in beiden Fällen auf den Quelltext.
Die häufigste und sparsamste Darstellung von Farben im Quelltext ist die hexadezimale Formulierung (#RRGGBB) mit 2 Zeichen pro Grundfarbe. Die CSS-Kurzform (#RGB) verwendet nur je 1 Zeichen, welches bei der Verarbeitung wiederholt wird.
Die WebSafe Palette verwendet darüber hinaus nur 6 der 16 Hex Ziffern und kommt mit 8 Bit Speicherplatz pro Farbe aus.

Index-Farben mit Farbtabelle

Dieses Verfahren verwendet eine Tabelle (Color Lookup Table, CLUT), welche die 3 RGB Farbwerte für jede einzelne Farbe festlegt. Die Länge der Tabelle beträgt max. 256 Zeilen, d.h. die fortlaufende Nummer jeder Farbe (Farb-Index) kann durch eine Zahl 0..255 dargestellt werden. Das entsprciht 8 Bit = 1 Byte.
Mit einer CLUT-Tabelle reduziert sich daher der Speicher-Aufwand von 24 Bit auf maximal 8 Bit pro Farbe. Dafür muss man beim Lesen oder Schreiben jeder Farb-Information in der Tabelle nachschlagen.
Dieses Verfahren (Index-Farben) wird u.a. von den Grafik-Formaten GIF und PNG verwendet.

Additive Farb-Mischung ↔ RGB-Farben

Die Angabe der 3 Grundfarben Rot, Grün und Blau (RGB) zur Definition einer Farbe ist fast allen Paletten gemeinsam. Additive Mischung eignet sich (nur) für selbst-leuchtende Farb-Quellen, d.h. für Lichtpunkte.
Die Auswahl der Farben RGB ist sinnvoll aber nicht selbstverständlich - Einerseits ließen sich die wahrnehmbaren Farben auch durch andere 'Tripel' von Grundfarben darstellen, andererseits gibt es wahrnehmbare Farben außerhalb des mit RGB darstellbaren Bereichs.
Je nach Arbeitsbereich verwendet man andere Farb-Systeme als RGB, z.B. das → CMY-System für Drucker.
In der gesamten Informatik werden Farb-Daten normalerweise als RGB-Daten angegeben.
Das trifft auch dann zu, wenn die Daten nicht mit der Addition von Lichtquellen (Monitor-Ausgabe) zu tun haben.
RGB-Daten sind daher eine abstahierte Form zur Beschreibung von Farben.
Daten anderer Farb-Systeme (→ CMY, → HSB, ...) werden umgerechnet.
Die Beschreibung jeder der 3 RGB Grundfarben erfolgt normalerweise durch 8 Bit = 1 Byte, das entspricht einer Dezimalzahl 0..255 oder einer Hexadezimal-Zahl #00..#FF
Auch diese Konvention ist sinnvoll, aber nicht selbstverständlich.
Mit mehr als 8 Bit je Grundfarbe könnte man Farben genauer beschreiben.
Andererseits werden Paletten ausgewählter Farben meist dazu verwendet, um Speicherplatz zu sparen - In diesem Fall wird jede Farbe durch weniger als 8 Bit beschrieben.

TrueColor ↔ 24 Bit ↔ 16777216 Farben

Das True Color System verwendet 8 Bit = 1 Byte zur Beschreibung jeder der 3 Grundfarben (Rot, Grün, Blau). Mit 8 lassen sich Dezimalzahlen 0..255 darstellen. Die Kombination der 3 Grundfarben ergibt daher 256*256*256=16777216 verschiedene Farben.
TrueColor wird allgemein nicht als Palette angesehen. Genau genommen ist auch dieses System eine Palette, wenn auch mit sehr vielen Farben.
Zwischen je 2 benachbarten TrueColor Farben gibt es theoretisch unendlich viele weitere Farbtöne, die mit den üblichen Mitteln der Informatik nicht darstellbar sind.
Die Definition von Farben sagt nur aus, dass übliche Software damit arbeiten kann. Im Gegensatz dazu sind die meisten praktisch verwendeten Monitore nicht in der Lage, so viele Farben tatsächlich unterscheidbar anzuzeigen. Unabhängig davon sind auch nicht alle Menschen in der Lage, die geringen Unterschiede dieser Palette wahrzunehmen. Dieses Thema ist oft emotional geprägt, hält jedoch einer objektiven Überprüfung nur selten stand.
Der 24 Bit 'Farb-Raum' stellt in der gesamten Informatik die Grundlage der Farb-Definition dar. Alle nachfolgend genannten Paletten sind Teil-Mengen der TrueColors. Sie verwenden zum Speichern weniger als 24 Bit, zur Farb-Definition werden jedoch immer die 24 Bit der TrueColor Farben verwendet.

Alpha-Kanal

Moderne Farbsysteme verwenden zusätzlich zu den 3 RGB-Grundfarben ('Kanäle') noch einen 4. Kanal zur Darstellung der Transparenz. Dafür wird 1 weiteres Byte verwendet: Das ergibt eine Abstufung der Transparenz in 256 Stufen und Farb-Worte von 32 Bit.

Nur neuere Grafik-Formate wie z.B. PNG unterstützen (optional) auch den α-Kanal.
Die optionale Transparenz von GIF-Dateien ist nicht abgestuft, d.h. sie kann nur auf 0% oder 100% gesetzt werden.

HighColor ↔ 16 Bit ↔ 65536 Farben

Das HighColor System verwendet unterschiedlich viele Bits zur Beschreibung der Grundfarben.  

CSS-Kurzform ↔ 12 Bit ↔ 4096 Farben

TrueColor mit CSS

Zur Vermeidung von Missverständnissen wird festgestellt:
Mit Cascading StyleSheets (CSS) lässt sich jede der 17 Mio TrueColor Farben definieren.
Unabhängig davon gibt es eine praktische Kurzform zur Definition von 4096 ausgewählten Farben.
Details zum Thema CSS

CSS-Kurzform

Diese 4096 Farben lassen sich im Quelltext mit nur 3 Hexadezimal-Zeichen (#RGB) besonders sparsam darstellen. Für jede Grundfarbe wird nur eine Hex-Ziffer 0..F angegeben. Bei der Interpretation wird dieses Zeichen wiederholt.

Beispiel:
Die Kurzform #369 entspricht der Standard CSS Farb-Definiton #336699 und ist äquivalent der Angabe rgb(51,102,153) bzw. der Farbe

In diesem Web wird zur Farb-Definition fast ausschließlich die CSS-Kurzform verwendet, meist noch zusätzlich auf die WebSafe Farben (siehe unten) eingeschränkt.

Die 4096 Farben der CSS-Kurzform werden intern meist im TrueColor System gespeichert, d.h. mit 24 Bit je Farbe.
In diesem Fall betrifft die Einsparung ausschließlich den Quelltext.

WebSafe Colors ↔ 8 Bit ↔ 216..256 Farben

WebSafe Farben
Die Palette dieser Farben sollte ursprünglich die Farben von Web-Anwendungen auf jedem Monitor 'korrekt' anzeigen - daher der Name. Das wurde nicht erreicht, weil die angezeigte Farbe von Bauart, Alterung und Einstellung des Monitors abhängt.
Die WebSafe Farben haben jedoch besondere Bedeutung erlangt, weil sich die Farb-Daten in nur 1 Byte speichern lassen.
Die Palette besteht aus einer Teil-Menge der ↑ CSS-Kurzform: Man definiert jede Farbe in der hexadezimalen Form #RGB, verwendet jedoch nur die Hex-Ziffern {0, 3, 6 ,9 ,C, F}. Die Ziffern werden gemäß CSS-Syntax für die Interpretation verdoppelt, entsprechen daher den Werten {#00, #33, #66, #99, #CC, #FF} oder dezimal {0, 51, 102, ... 255}
Diese 6 möglichen Werte je Grundfarbe ergeben bei Kombination 6*6*6=216 verschiedene Farben für diese Palette.
Da immer 1 Byte zum Speichern verwendet wird, bleiben bei gleichem Speicher-Aufwand noch 40 individuell nutzbare Farben.
Für fast alle Web-Anwendungen sind die Farben der WebSafe Palette völlig ausreichend. Die WebSafe Palette kann auch zum Speichern von Bildern mit Index-Farben verwendet werden, z.B. in den Formaten GIF oder PNG.
Vorteil: Die Farben der Palette sind gleichmäßig verteilt, d.h. sie kann als Allround-Farbtabelle für jedes beliebige Bild verwendet werden.
Nachteil: Eine eigene optimierte Farbtabelle für jedes einzelne Bild ergibt bessere Qualität und/oder geringere Speicher-Größe.
Typisches Beispiel:
Bild, Größe 480x360 Pixel
TrueColor: 480*360*24/8 = 518400 Byte = 506 kB
WebSafe: 480*360*8/8 = 172800 Byte = 169 kB
Die berechnete Größe ist das Roh-Format. GIF oder PNG wenden zusätzlich eine (reversible) Kompression an. Diese reduziert die Speichergröße weiter auf 50-80 kB. Das entspricht im Effekt ca. 2..4 Bit Speicherbedarf je Pixel.
Zum Vergleich: Das gleiche Bild im Format JPEG benötigt je nach Qualität der Kompression 20-90 kB.

VGA-Farben ↔ 4 Bit ↔ 16 Farben

VGA Farben
Diese Palette stammt aus der 'Urzeit' der Informatik. Die ersten Farb-Monitore konnten nur eine sehr begrenzte Anzahl verschiedener Farben anzeigen. Die Besonderheit dieser Palette sind die Namen der Farben. Sie wurden in den CSS-Standard aufgenommen werden noch heute von jeder Software 'verstanden'.