PDA

Visualizza la versione completa : [C]Recupero informazioni da immagine .bmp


web_pirate
15-05-2014, 19:13
Buonasera. Ragazzi sto sbattendo la testa su questo problema che alla fine sono sicuro si rivelerÓ essere abbastanza semplice.
Sto tentando di scrivere una funzione che, dopo aver aperto un file .bmp, salva il valore di ogni pixel in un array di dimensione altezza_immagine*larghezza_immagine.
Al 10░ byte dall'inizio del file ci dovrebbe essere il valore dell'offset da sommare all'inizio del file stesso per poter iniziare a leggere il valore di ogni pixel. Il problema Ŕ che quando tento di leggere il valore del primo pixel(si tratta di una immagine a 8 bit di profonditÓ, quindi 1 byte per ogni pixel) mi viene fuori un valore negativo o comunque non veritiero. C'Ŕ qualche conversione che sto dimenticandomi di fare prima o dopo aver letto il valore? Probabilmente sarÓ un problema di casting...
Ecco la funzione:

void get_pixels(char path[]){
int i, j=0;
int offset;
char depth;
FILE *fp;
char bmp[5];

for(i=strlen(path)-4;i<strlen(path);i++){
bmp[j]=path[i];
j++;
}
if(strstr(bmp, ".bmp")==NULL){
printf("\nIndicare un file .bmp come immagine!\n");
exit(1);
}

fp = fopen(path, "r");

fseek(fp, 28, SEEK_SET);
fscanf(fp, "%c", &depth);

if(depth!=8){
printf("\nSelezionare una immagine a 8 bit!\n");
exit(2);
}

fseek(fp, 10, SEEK_SET);
fread(&offset, sizeof(offset), 1, fp);
printf("\n%d", offset);

fseek(fp, offset, SEEK_SET);
fscanf(fp, "%c", &pixels[0]);
printf("\n%d", pixels[0]);

fclose(fp);
}

oregon
15-05-2014, 22:19
Vedi

http://www.iprogrammatori.it/forum-programmazione/cplusplus/recupero-informazioni-immagine-bmp-t20769.html#p8516148

web_pirate
15-05-2014, 22:44
E' mia quella discussione... xD

oregon
16-05-2014, 09:44
Lo so ... e hai avuto anche delle risposte che Ŕ inutile riproporre qui ...

web_pirate
16-05-2014, 23:40
Il post nell'altro forum Ŕ successivo a questo...

Loading