Format Pcx de ZSoft
Cette section présente le format d'images Pcx de ZSoft utilisé par Up ! Pcx.
Une image au format Pcx est encodée avec la convention d'Intel i.e. Little Endian.
La résolution possible est variable même si dans les fait elle est souvent de 72 Dot Per Inch (DPI).
Les palettes de couleurs possibles sont noir et blanc, 4 couleurs, 16 couleurs et 256 couleurs.
En-tête de l'image Pcx
Les propriétés de l'en-tête de l'image débutent au premier octet du fichier. Elles sont les suivantes :
Propriété | Taille en octets | Description |
Signature | 1. | Signature du format. 0x0A. |
Version | 1. | Version du format. |
EstCompressee | 1. | Si Vrai, l'image est compressée. |
NbBitsParPixel | 1. | Nombre de bits par pixels. |
OffsetPixelsX | 2. | Offset de l'image en pixels en abscisse. 0. |
OffsetPixelsY | 2. | Offset de l'image en pixels en ordonnée. 0. |
LargeurPixels | 2. | Largeur moins un de l'image en pixels. |
HauteurPixels | 2. | Hauteur moins un de l'image en pixels. |
NbPixelsParPouceX | 4. | Nombre de pixels par pouce moins un en abscisse. |
NbPixelsParPouceY | 4. | Nombre de pixels par pouce moins un en ordonnée. |
TableCouleurs. | 48. | Table des couleurs. |
NbPlans | 1. | Nombre de plans. 1 ou 3. |
NbOctetsParLigne | 2. | Nombre d'octets par ligne d'image. |
Les valeurs possibles de la propriété Version sont :
- 0 pour la version 2.5.
- 2 pour la version 2.8 avec palette de couleurs.
- 3 pour la version 2.8 sans palette de couleurs.
- 5 pour la version 3.0.
Les valeurs possibles de la propriété NbBitsParPixels sont :
- 1 pour une image monochrome.
- 2 pour une image en 4 couleurs.
- 4 pour une image en 16 couleurs.
- 8 pour une image en 256 couleurs avec 1 plan et en couleurs vraies avec 3 plans.
Table des couleurs de la palette de l'image Pcx
La table des couleurs dépend de la palette.
- Image monochrome.
Elle est définie par les quatre premiers octets de TableCouleurs qui doivent valoir 0x00 0x00 0x00 0x80.
- Image en 4 couleurs.
Il faut considérer les quatre premiers octets de TableCouleurs :
- Si ces octets sont 0x00 0x00 0x00 0x60 alors les couleurs de la palette sont cyan clair, magenta clair, blanc et noir.
- Si ces octets sont 0x00 0x00 0x00 0x40 alors les couleurs de la palette sont cyan foncé, magenta foncé, blanc et noir.
- Si ces octets sont 0x00 0x00 0x00 0x60 alors les couleurs de la palette sont cyan vert clair, rouge clair, marron clair et noir.
- Si ces octets sont 0x00 0x00 0x00 0x40 alors les couleurs de la palette sont rouge foncé, magenta foncé, marron foncé et noir.
- Image en 16 couleurs.
La table des couleurs est composée de 3*16 octets de TableCouleurs donnant les composantes rouges, vertes et bleues de la palette. Ils suivent l'en-tête de l'image.
- Image en 256 couleurs.
La table des couleurs est placée à l'octet fin du fichier - 769 puisqu'elle ne peut tenir dans TableCouleurs. La valeur de cet octet doit être 0x0C.
La table des couleurs est composée de 3*256 octets donnant les composantes rouges, vertes et bleues de la palette.
Codage des pixels de l'image Pcx
Les pixels commencent à partir de l'octet 128 comptabilisé à partir du début du fichier.
Les lignes de pixels sont stockées du haut vers le bas de l'image.
Si l'image est compressée, les pixels sont encodés au format Rule Length Encoded (RLE) sur 7 bits.
Quand il y a plusieurs plans de couleurs, les plans sont dans l'ordre rouge, vert et bleu par ligne de pixels.