Section courante

A propos

Section administrative du site

Introduction

L'extension du fichier «.PCX» est format d'image originaire du logiciel PC PaintBrush pour le système d'exploitation DOS, lequel avait été développé par le ZSoft Corporation à Marietta, en Géorgie. Le format PCX est largement pris en charge par les applications graphiques DOS, après avoir été révisé au fil des ans pour suivre le rythme des nouvelles technologies d'affichage graphique. Il ne prenait initialement en charge que les images à base de palette monochrome et 16 couleurs. Après qu'IBM a publié sa gamme de micro-ordinateur PS/2, l'adaptateur de carte vidéo VGA est rapidement devenu la nouvelle norme d'affichage, et le format PCX a été révisé pour prendre en charge les images 256 couleurs. Le format a finalement été mis à niveau pour ajouter la prise en charge de l'imagerie de couleur en 24 bits. La structure globale du format est relativement simple, consistant en un entête de 128 octets et un Bitmap encodé en RLE. L'entête contient une zone de palette offrant de la place pour 16 triplets de couleur RVB. Lorsque l'imagerie de 256 couleurs apparu, il fut évidant que le format devait être modifié. Il a été décidé que l'entête resterait tel qu'il était écrit et que des palettes de 256 couleurs seraient ajoutées à la fin du fichier, en suivant le Bitmap.

Structure d'entête du fichier

L'entête du fichier PCX occupe les 128 premiers octets d'un fichier PCX. De nombreux champs d'entête sont d'origine et d'utilisation ésotériques et peuvent être ignorés lorsque l'entête est traité dans un programme. Dans un entête PCX, tous les champs d'entête inutilisés doivent être remplis de zéro. Voici la structure d'entête du fichier .PCX :

Déplacement Taille Description
0 1 octet Ce champ permet d'indiquer la signature du fichier, soit la valeur 0Ah.
1 1 octet Ce champ permet d'indiquer la version du fichier PCX :
Valeur Description
0 Cette valeur permet d'indiquer la version 2.5
2 Cette valeur permet d'indiquer la version 2.8 avec palette de couleur
3 Cette valeur permet d'indiquer la version 2.8 sans palette de couleur
5 Cette valeur permet d'indiquer la version 3.0 ou supérieur
2 1 octet Ce champ permet d'indiquer le type d'encodage du fichier :
Valeur Description
0 Cette valeur permet qu'aucune compression de l'image est présente. Beaucoup de logiciel ne supporte pas ce type d'encodage.
1 Cette valeur permet un encodage par répétition de données de PCX.
3 1 octet Ce champ permet d'indiquer le nombre de bits par pixels pour chaque plage de couleur. Les valeurs reconnus sont : 1, 2, 4, 8 ou 24.
4 2 octets Ce champ permet d'indiquer la position horizontal minimum de l'image (X1).
6 2 octets Ce champ permet d'indiquer la position vertical minimum de l'image (Y1).
8 2 octets Ce champ permet d'indiquer la position horizontal maximum de l'image (X2).
10 2 octets Ce champ permet d'indiquer la position vertical maximum de l'image (Y2).
12 2 octets Ce champ permet d'indiquer la résolution horizontal, soit le nombre de points par pouce (DPI).
14 2 octets Ce champ permet d'indiquer la résolution vertical, soit le nombre de points par pouce (DPI).
16 48 octets Ce champ permet d'indiquer un tableau de champ 16 champs de 3 octets (Rouge, Vert, Bleu), soit 16 x 3 octets = 48 octets. Correspondant à une palette de 16 couleurs RVB.
64 1 octet Ce champ est réservé.
65 1 octet Ce champ permet d'indiquer le nombre de plages, soit 4 pour 16 couleurs, 3 pour 24 bits de vrai couleurs (si le nombre de bits par ligne est 8).
66 2 octets Ce champ permet d'indiquer le nombre d'octets par ligne pour une plage.
68 2 octets Ce champ permet d'indiquer les informations de palette sur la sortie de la palette :
Valeur Description
1 Cette valeur permet d'indiquer une sortie couleur ou noir et blanc.
2 Cette valeur permet d'indiquer une sortie teinte de gris. Cette valeur est ignoré par le PC Paintbrush version IV et IV.
70 2 octets Ce champ permet d'indiquer le nombre de pixels que contient l'image horizontalement.
72 2 octets Ce champ permet d'indiquer le nombre de pixels que contient l'image verticalement.
74 54 octets Ce champ ne contient aucune valeur ou n'a pas de valeur significative.

Structure du corps du fichier

La technique de compression est très faible, mais à l'avantage d'être peu exigeant en terme de mémoire RAM. Le schéma de codage RLE utilisé dans le format PCX est un bit impaire, en ce sens que les exécutions et les séquences sont différenciées par les deux premiers bits d'un bit plutôt que par le seul bit d'ordre supérieur le plus habituel. Il semble probable que les créateurs du format envisageaient à l'origine d'utiliser plus de deux constructions d'encodage, mais ce n'est qu'une conjecture. Dans tous les cas, un lecteur de format doit lire un octet de données et inspecter les deux bits supérieurs. S'ils sont tous les deux définis, une exécution est indiquée et les 6 bits inférieurs indiquent le nombre de fois pour répéter l'octet suivant dans le flux de données. Si les deux bits supérieurs ne sont pas définis, un compte de répétition de 1 est supposé et l'octet est une valeur de données d'image réelle. Étant donné que les comptages de répétition sont exprimés en seulement 6 bits, la valeur de comptage de répétition maximale est de 63. De plus, les octets d'image uniques dont les 2 bits supérieurs sont définis doivent être traités spécialement. Ceux-ci doivent être codés à l'aide de 2 octets pour indiquer une exécution répétée de 1 octet. Sinon, le seul octet avec les 2 bits supérieurs définis serait interprété à tort comme indiquant une répétition de l'exécution. Le format PCX est destiné principalement à l'imagerie sur écran, et la structure globale du bitmap codé est dérivée de sa représentation basée sur l'affichage. Le format dépend donc du périphérique. Par exemple, les images pour le mode 12h de la carte vidéo VGA sont codées comme des plans de bits séparés, conformément à l'organisation planaire de ce mode vidéo. Cette situation permet à une image encodée d'être décodée et affichée assez rapidement; mais cette situation signifie également que les encodeurs et décodeurs de format doivent gérer les différents modes d'affichage séparément. Une autre caractéristique du Bitmap codé est que les exécutions peuvent s'étendre à la fois sur des plans et des lignes de balayage. C'est-à-dire qu'une analyse peut s'étendre au-delà de la fin de la ligne ou du plan de numérisation en cours et passer au début de la ligne ou du plan de numérisation suivant. Bien qu'il puisse sembler que cette convention compliquerait la logique d'un codeur ou d'un décodeur, ce n'est pas réellement le cas si la logique est développée autour de cette prémisse pour commencer. Notez que les lignes de balayage individuelles sont remplies de bits inutilisés pour faire de leur longueur un nombre entier de mots de 16 bits.

Remarque

Voir également

Langage de programmation - Traitement d'image - Accueil

Dernière mise à jour : Mercredi, le 2 mars 2016