PDA

View Full Version : [C]Manipolazione di png


Rsk
19-06-2010, 19:34
Ciao a tutti..
Dovrei realizzare un programma che prende in input una immagine png e conta i pixel di un certo colore.
Non ho esperienza a riguardo e quindi mi rivolgo a voi.

Io stavo pensando a questo

int main ()
{
FILE * pFile;
long lSize;
char * buffer;
size_t result;

pFile = fopen ( "img.png" , "rb" );
if (pFile==NULL) {fputs ("File error",stderr); exit (1);}

// obtain file size:
fseek (pFile , 0 , SEEK_END);
lSize = ftell (pFile);
rewind (pFile);

buffer = (char*) malloc (sizeof(char)*lSize);
if (buffer == NULL) {fputs ("Memory error",stderr); exit (2);}

result = fread (buffer,1,lSize,pFile);
if (result != lSize) {fputs ("Reading error",stderr); exit (3);}


fclose (pFile);
free (buffer);
return 0;
}
Leggo il file in formato binario.. ma poi?
Come faccio ad avere la rappresentazione numerica dell'immagine per poter distinguere i colori?
Devo per forza utilizzare librerie di terze parti?

Tommo
19-06-2010, 20:17
Beh puoi divertirti a implementare il parsing delle specifiche (http://en.wikipedia.org/wiki/Portable_Network_Graphics#Technical_details)

ma vista la complessità del formato forse ti conviene buttare dentro FreeImage (http://freeimage.sourceforge.net/) e non pensarci più :D

Rsk
20-06-2010, 12:22
ok grazie :D