6bit auf 8bit Farbpalette konvertieren

By dose | October 1, 2008
Under: technical stuff, Uncategorized

Der Maskenhandler für die Terminalausgabe von unserem Softwarepaket unterstützt auch ANSI-Color Farbterminals mit einer 6bit breiten Palette (sprich 64 Farben).
Hat man jedoch gerade kein Terminal bei der Hand, kann man auch einen Terminalemulator wie z.B. PuTTY verwenden.
Dieses unterstützt bereits 256 Farben nach der xterm-Emulation. Nun wollte ich also auch auf meinen xterm Farben haben und nicht immer nur mit vt100 herumzugrundeln.
Aus diesem Grund musste also die 6bit – Palette auf eine 8bit Palette gemappt werden. In unserem termcap-File konnte man auch die einzelnen Farbwerte definieren, bloß welche Werte nehmen, wenn man eine größere Palette hat als die verwendete EGA-Palette?
Ich habe im Internet nach einer Mapping-Tabelle oder einem kleinen Konvertierungsscript gesucht. Nach langem, vergeblichen Suchen habe ich dann schließlich beschlossen, selbst ein kleines Programm zu schreiben, welches die Konvertierung vornimmt:
Zuerst werden beide Paletten im Speicher angelegt, dann wird die 6bit-Palette durchgegangen und jeder Eintrag wird an den nähesten RGB-Wert der 8bit Palette angeglichen. Dieser Index wird dann genommen und siehe da: Die Palette ist konvertiert.
Das Programm schreibt einfach die einzelnen Farbstufen und den zugehörgen Palettenwert in unserem Termcap-Format auf stdout. Viell. kann es ja auch einer meiner Leser brauchen?

Quellcode gibt’s jedenfalls hier.
Compilieren einfach mit gcc -o palette palette.c oder mit jedem beliebigen anderen C-Compiler.

Leave a Comment

Name:

E-Mail :

Subscribe :
Website :

Comments :