Il formato grafico PCX


La compressione tipo PCX, pur non essendo ottima, è certamente molto semplice. Sfrutta infatti la caratteristica che in un file grafico ci possa essere un gran numero di byte contigui che si ripetono.
Ogni byte letto (c) viene testato con il valore 0xC0 (c&0xC0) e si possono avere due casi:

  1. Se il valore testato è di nuovo 0xC0 vuol dire che si dovrà ripetere n volte il carattere successivo (n=c&0x3F);
  2. Se il valore testato è diverso da 0xC0 allora lo si copia direttamente nella destinazione.

All'interno di un file PCX troviamo tre parti principali, in ordine:l'header,il corpo dell'immagine da decodificare come abbiamo visto prima e le palette.

Vediamo ora una struttura in C che ci sarà utile per leggere l'header:

struct PCXheader{
char manufacturer;	/*sempre uguale a 10*/
char versione;		/*per un file a 256 colori deve essere 5*/
char encoding;		/*settato su 1*/
char bitsxpixel;	/*8 per immagine a 256 colori*/
int xmin,ymin;		/*coordinate dell'angolo superiore-sinistro*/
int xmax,ymax;		/*coordinate dell'angolo inferiore-destro*/
int hres,vres;		/*risoluzione orizzontale e verticale*/
char palette16[48];	/*palette EGA non usate a 256 colori*/
char reserved;		/*riservato*/
char color_planes;	/*color planes*/
char bytesxlinea;	/*numero di byte in una linea di pixel*/
int palette_type;	/*2 per palette a colori*/
char filler[58];	/*serve solo a riempire la struttura*/
};

Ci restano da leggere quindi solo le palette, che occupano gli ultimi 768 byte del file.

Di seguito potete scaricare un piccolo viewer di file PCX in cui troverete un esempio pratico di quello che avete appena visto qui sopra.

Scarica l_pcx.zip (12 kb).


Indietro
Realizzato da Andrea Nazzaro. Ultimo aggiornamento giovedì 10 febbraio 2000