Le problème est le suivant : je souhaite lire un fichier bmp couleur 24 bits et 16 millions de couleur, et stocker le resultat dans 3 matrices rouge, vert et bleu.
Voici le code que j'utilise :
int lit_bmp(char *source){ //source = fichier à lire
FILE * ptr_src;
if((ptr_src=fopen(source,"rb"))!=NULL)
{
for (int i=0;i<offset;i++) fgetc(ptr_src);
for (int y=0;y<hauteur;y++)
{
for (int x=0;x<longueur;x++)
{
ecran_b[x+y*longueur]=(unsigned char)fgetc(ptr_src);
//ecran_b, ecran_r et ecran_v designent des tableaux (correctement alloués ds une fct précédente
//ecran_r = contient les pixels rouges de l'image ...
ecran_v[x+y*longueur]=(unsigned char)fgetc(ptr_src);
ecran_r[x+y*longueur]=(unsigned char)fgetc(ptr_src);
}
}
fclose(ptr_src);
}
return 0;
}
Le problème est que quand je teste ce dernier (et que je reconstitue l'image, il y a "un decalage" très bizarre, particulièrement dans le tiers en haut à gauche de l'image. En consultant les archives, j'ai vu que je n'etais pas le seul à avoir ce problème. La solution suggérée est d'enregistrer une image en bmp 24 bits, mais l'image en question doit posséder 256 couleurs seulement.
Or, cela ne me satisfait pas, je veux pouvoir traiter des images à 16 millions de couleur, alors j'attend vos suggestions avec impatience.
Ah oui, je developpe sous Borland c++ (win xp).