Salve a tutti ragazzi. Sto cercando di scrivere un programmino che sia in grado di memorizzare all'interno di una matrice i valori di ogni singolo pixel recuperati da un file in formato .bmp. Diciamo che i problemi sono sorti un po' prestino. Non riesco a capire bene dove iniziano, all'interno del file, le informazioni che mi interessano.
Allora, l'immagine in questione, intanto, è una semplice immaginetta 10x10 dove il primo pixel è nero(o quasi) e tutti gli altri sono bianchi. Un file BMP so che all'inizio ha la firma(2 byte), la dimensione(4 byte), un campo riservato(4 byte) e l'offset dell'immagine(4 byte); quest'ultimo dovrebbe indicare l'offset, in byte, dall'inizio del file, per arrivare all'inizio delle informazioni riguardanti i pixel, giusto? Quindi, facendo due calcoli, dopo i primi 10 byte dovrei trovare questo offset, quindi faccio:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define filename "pixel.bmp"
int main(){
FILE *fp;
int i, j=0;
char data;
if(!(fp=fopen(filename, "r"))){
printf("\nErrore durante l'apertura del file.\n");
return 1;
}
fseek(fp, 10, 0);
for(i=0;i<4;i++){
fread(&data, sizeof(data), 1, fp);
printf("%d\n", data);
}
fclose(fp);
return 0;
}
Per il mio file, il primo numero che mi ricavo alla posizione 10 è 82, quindi suppongo che dovrò semplicemente riscrivere, dentro la funzione fseek, 82 al posto di 10. Così facendo ho questo risultato:
2
0
0
0
2 dovrebbe indicare il valore del primo pixel, o mi sto sbagliando? E' questo l'inizio delle informazioni che mi servono?
Grazie in anticipo.