Picture exchange

NamePCX
AbkürzungPCX
Dateiendung.pcx
HerstellerZSoft, 1982
FarbraumMonochrom
Graustufen
Palette
RGB
Farbtiefe1 Bit - 2 Farben
4 Bit - 16 Farben
8 Bit - 256 Farben
24 Bit – 16,7 Mio
Kompressionkeine
RLE (verlustfrei)
ByteorderLittle Endian

Picture exchange (PCX) ist ein Dateiformat zur Speicherung von Bilddaten.

Das PCX-Format wurde im Jahr 1982 von der Firma ZSoft entwickelt und in den eigenen Produkten Paintbrush und FRIEZE (Residentes Hilfsprogramm zum Import von Bildern aus anderen Anwendungen z. B. Lotus 1-2-3) eingesetzt. Heute wird das Format von den meisten Grafikprogrammen kaum mehr unterstützt.

Zum Zeitpunkt der Entwicklung von PCX gab es lediglich Hercules- und CGA-Grafikadapter. Mit den Jahren wurden die Grafikkarten besser und neue Grafikmodi entstanden (EGA, MCGA, VGA). Diese wurden dann durch neuere Versionen des PCX-Formates abgedeckt. Die Änderungen der Formatdefinition beschränkten sich aber im Wesentlichen auf die Farbpalette.

Aufbau einer PCX-Datei

Allgemeiner Aufbau

Header (128 Byte)
Bilddaten
Farbpalette (optional, nur bei 256 Farben)

Header

PCX-Dateien besitzen, unabhängig von der Version, einen 128 Byte langen Header.

OffsetBytesBedeutung
01Identifikation: 10 (0Ahex) = PCX-File
11PCX-File Version:
0 = Version 2.5
2 = Version 2.8 mit Palette
3 = Version 2.8 ohne Palette
4 = Windows ohne Palette
5 = Version 3.0
21Komprimierung
0 = keine
1 = RLE-Kodierung
31Bits per Pixel (oder per Plane)
48Koordinaten des Originalbildes
XMIN, YMIN, XMAX, YMAX
122horizontale Auflösung in DPI (dots per inch)
142vertikale Auflösung in DPI (dots per inch)
1648Color Map mit der Definition der Farbpalette.
Organisiert als 16*3 Byte Feld.
641reserviert
651Anzahl der Farbebenen (Planes), max. 4
662Bytes pro Bildzeile (gerade Zahl)
682Palette Information
1 = Farbe - S/W
2 = Graustufen
702Bildschirmbreite in Pixel
722Bildschirmhöhe in Pixel
7454Leerbytes zum Auffüllen des Headers

Bilddaten

Ohne Komprimierung ist jedes Farbbyte ein Index (Verweis) auf die Farbpalette. Mit Komprimierung sind auch Längenbytes möglich, die angeben, wie oft das folgende Farbbyte zu wiederholen ist (Lauflängenkodierung). Die Komprimierung ist daher besonders bei Grafiken mit größeren einfarbigen Flächen effektiv. Längenbytes werden daran erkannt, dass ihre beiden höchsten Bits gesetzt sind. Mit den restlichen Bits wird die Länge angegeben, so dass die maximal angebbare Länge 63 Bytes beträgt. Einzelne Farbbytes können direkt angegeben werden. Lediglich wenn ihr Wert 192 oder darüber beträgt, müssen sie mit einem vorangehenden Längenbyte mit dem Wert 193 aufgeführt werden, da sie sonst als Längenbyte interpretiert würden.

Farbpalette

Farbpaletten mit mehr als 16 Farben werden hinter den Bilddaten aufgeführt. In diesem Fall wird zwischen Bilddaten und Palette ein Byte mit dem Wert 12 eingefügt. Anschließend folgen nacheinander für jeden Farbindex jeweils drei Farbbytes für den RGB-Wert.

Farbebenen

Eine Besonderheit des PCX-Formates ist die Speicherung der Bilddaten in Farbebenen. Die Reihenfolge der Kodierung ist Y-Achse > Farbebene > X-Achse. Dies ist zum einen dadurch begründet, dass PCX (im Gegensatz zu BMP) ein hardwarenahes Format ist, das ein (komprimiertes) Abbild des Bildschirmspeichers darstellt, und zum anderen, dass Truecolor-Bilder oder Bilder mit Dithering sich so besser mit Lauflängenkodierung komprimieren lassen.

Laut offiziellem PCX-Standard dürfen „Läufe“ der RLE sich über mehrere Farbebenen erstrecken,[1] jedoch unterstützen einige Dekoder das nicht. Für gute Kompatibilität sollten Enkoder dies vermeiden, während Dekoder es unterstützen sollten. Läufe dürfen sich niemals über mehrere Zeilen erstrecken.

Gängige Formate

FarbtiefeBit pro EbeneEbenenReihenfolgeUrsprung
1 (2 Farben)11MDA/Hercules Monochrom
2 (4 Farben)*21CGA 4-Farb-Modus
4 (16 Farben)14Blau-Grün-Rot-Intensität**EGA 16-Farb-Modus
8 (256 Farben)81Palette: Rot-Grün-BlauVGA 256-Farb-Modus
24 (Truecolor)83Rot-Grün-BlauKeiner***

Anmerkungen

 * 2-Bit-Farbmodus gilt als veraltet und wird nicht mehr offiziell vom Standard unterstützt.
 ** Eigentlich durch Palette bestimmt, aber diese Anordnung ist am gängigsten.
 *** Gängige Grafikkarten verwenden die Reihenfolge Blau-Grün-Rot und stellen die Pixel als 32-Bit-Blöcke dar.

Literatur

  • Günter Born: Referenzhandbuch Dateiformate. Addison-Wesley, Bonn 1997, ISBN 3-8273-1241-8
  • Thomas W. Lipp: Grafikformate. Microsoft Press, Unterschleißheim 1997, ISBN 3-86063-391-0

Einzelnachweise

  1. Die Datei MARBLES.PCX dort ist ein Beispiel für Läufe über mehrere Farbebenen: https://www.fileformat.info/format/pcx/sample/index.htm