questo esempio di codice, spiega (spero in modo esaustivo)
come viene codificato un file di tipo BITMAP a 24 bit.
codice:
#include <stdio.h>
#include <stdlib.h>
int multiplo4(int i)
{
while(i%4!=0)
i++;
return i;
}
int main()
{
int l, a, rl;
printf("inserisci la [largezza] in pixel: ");
scanf("%d", &l);
printf("inserisci l\' [altezza] in pixel: ");
scanf("%d", &a);
printf("\n%d pixel nella codifica RGB corrispondono\na %d byte (3 byte per pixel, 24 bit)\n", l, l*3);
printf("\nOgni scan-line deve essere composta da\nuna stringa di byte multipli di 4 (32 bit)\n");
printf("Qualora la scan-line (larghezza*3) fosse composta da un numero\n");
printf("complessivo di byte inferiore ad un multiplo di 4\nverranno in automtico aggiunti dei byte nulli fino\n");
printf("a far raggiungere alla scan-line il piu\' vicino numero multiplo di 4\n");
rl=l*3;
printf("In questo caso, ll multiplo di 4 piu\' vicino a %d ", rl);
rl=multiplo4(rl);
printf("e\' %d\n", rl);
printf("quindi, ad ogni scan-line verranno aggiunti automaticamente %d byte\n", rl-(l*3));
printf("e complessivamente il file conterra\' %d byte nulli in piu\'\n", (rl-(l*3))*a);
printf("\nTutte le immagini bitmap24 di dimensioni (in pixel) %dx%d\nsono composte complessivamente da %d byte\n", l, a, (rl*a)+54 );
printf("\nI primi 54 byte contengono l\'intestazione del file (header)\nmentre i successivi (in questo caso) %d byte\ncontengono la mappatura RGB dell\'immagine\n\n", rl*a);
system("pause");
return 0;
}
altre info in italiano sulle .BMP:
http://www.galileimirandola.it/frattali/nuova_pa6.htm