Il formato PCX è stato elaborato dalla società ZSoft, che ha pubblicato il software PaintBrush in dotazione nello standard dei sistemi operativi Microsoft Windows a partire dagli anni '80.
Il formato PCX è un formato bitmap che permette di decodificare delle immagini la cui dimensione può arrivare fino a 65536 per 65536 e codificate ad 1 bit, 4 bit, 8 bit o 24 bit (corrispondenti rispettivamente a 2, 16, 256 o 16 milioni di colori). La struttura di un file PCX è la seguente:
Intestazione dell'immagine (in inglese bitmap information header) di una lunghezza di 128 byte;
Corpo dell'immagine;
Informazioni;
Paletta dei colori (opzionale). Si tratta di un campo di 768 byte che permette di immagazzinare i diversi valori di rosso, verde e blu (RVB) di ogni elemento della paletta.
L'intestazione dell'immagine fornisce delle informazioni sull'immagine, soprattutto sulle sue dimensioni e colori. L'intestazione dell'immagine è composta dai seguenti campi:
la firma del file (su un byte), che permette di identificare il tipo file. Il valore esadecimale 0A designa un file PCX: la versione (su un byte):
0= Versione 2.5;
2= Versione 2.8 con paletta;
3= Versione 2.8 senza paletta;
5= Versione 3.0.
Il formato (su un byte), cioè il metodo di decodifica usato. Il valore 1 designa una decodifica RLE; il numero di bit per pixel per piano (su un byte); Xmin (su due byte), ascissa dell'angolo superiore sinistro; Ymin (su due byte), ordinata dell'angolo superiore sinistro; Xmas (su due byte), ascissa dell'angolo inferiore destro; Ymax (su due byte), ordinata dell'angolo inferiore destro; risoluzione orizzontale (su due byte); risoluzione verticale (su due byte); paletta (su 48 byte); riservato (su un byte); numero di piani di colori (su un byte); numero di bit per linea (su 2 byte); tipo di paletta (su 2 byte); riempimento (58 byte). È interessante notare che Xmax - Xmin + 1 rappresenta la larghezza dell'immagine e che Ymax - Ymin + 1 rappresenta la sua altezza.
La codifica dell'immagine avviene scrivendo successivamente i bit corrispondenti ad ogni pixel, linea per linea cominciando dal pixel in alto a sinistra, poi scorrendo da sinistra a destra e dall'alto verso il basso.
Foto: © Pixabay.