Salve a tutti, dovrei:
1. acquisire i pixel di un file in una matrice
2. effettuare delle operazioni su questi dati,
3. creare una copia del file bitmap con la matrice di dati modificata.
Siccome la bitmap è a scale di grigi ed 8bit ogni, da come ho capito dal formato bitmap, c'è un solo valore da salvare nei dati e non 3 come per le RGB, giusto ?
Detto questo, per acquisire i pixel in una matrice di char faccio così, tralasciando le definizioni di header e quant'altro :
codice:
fseek(fd, hdr.offset - sizeof(hdr) - sizeof(infoHdr), SEEK_CUR);
for(y = 0; y < infoHdr.height; y++){
for(x = 0; x < infoHdr.width; x++){
(*dst)[(y * infoHdr.width + x)] = fgetc(fd);
}
for(x = 0; x < (4 - (3 * infoHdr.width) % 4) % 4; x++)
fgetc(fd);
}
Anche se non ho capito bene il secondo for innestato che cosa fa, non l'ho fatto interamente io.
Detto questo passo direttamente al punto 3, magari per il punto 2 apro un 3d apposito poichè è abbastanza complesso,
quindi mettiamo che ho fatto delle modifiche sulla matrice,
devo creare un nuovo file bitmap con la nuova matrice di dati, e faccio così:
codice:
a=fread(&hdr, sizeof(hdr), 1, origine);
fwrite(&hdr, sizeof(hdr), 1, copy);
a=fread(&infoHdr, sizeof(infoHdr), 1, origine);
fwrite(&infoHdr, sizeof(infoHdr), 1, copy);
fseek(copy, sizeof(hdr) + sizeof(infoHdr), SEEK_SET);
fwrite(modded,256*256,1,copy);
dove modded è la matrice di caratteri modificata.
Ora ho fatto una prova senza apportare modifiche alla matrice ed il problema è che la prima striscia superiore del nuovo file immagine, non è come dovrebbe, ma un pò sfalsata.
E' corretto quello che faccio e come lo faccio ??
Inoltre per poter operare sulla matrice di dati dell'immagine, opero delle conversioni da unsigned char to unsigned int e viceversa con dei semplici cast, e poi mi viene a creare un pò un macello sull'immagine,
anche in tal caso, a livello teorico se opero delle conversioni di questo tipo vado ad incidere sull'immagine ?
grazie per l'aiuto, e mi scuso se qualcosa non vi è chiaro, magari ve lo rispiego meglio,
il problema è un pò complesso da riassumere tutto insieme!