Je suis désespéré et au bord du suicide, donc je pense être dans la bonne section.
A part ca, je vais essayer de pas trop jouer mon boulet. Je suis pas vraiment un pro de l'informatique et j'aimerais juste pouvoir lire les octets d'un fichier bitmap.
J'ai bien étudié la norme bitmap, j'arrive a bien lire le header, à réccupérer les premières données, mais voila, après quelques lignes de lecture les données lues ne sont plus du tout les bonnes, je ne lis plus que des valeurs 255 qui ne sont absolument pas présente dans l'image (j'ai vérifié ca avec un éditeur hexadécimal). Enfin, je vais pas trop m'attarder dans la description du problème et je vais laisser quelques "pros" du language C jeté un coup d'oeil à ce que j'ai écrit comme programme et j'espère que quelqu'un saura trouver une solution à mon probleme.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
#define nom "C:\\Projet\\bitmap\\test.bmp"
#define mode "r"
FILE *fichier;
int i, j;
int largeur_image, hauteur_image, offset, compteur = 0;
unsigned char pixel;
fichier = fopen(nom, mode);
printf("Nom de l'image : %s", nom);
fseek(fichier, 10, SEEK_SET); //offset de position des premières données
offset = fgetc(fichier) + fgetc(fichier) * 256 + fgetc(fichier) * 65536 + fgetc(fichier) * 16777216;
printf("\nOffset de l'image = %d", offset);
fseek(fichier, 18, SEEK_SET); //largeur de l'image
largeur_image = fgetc(fichier) + fgetc(fichier) * 256 + fgetc(fichier) * 65536 + fgetc(fichier) * 16777216;
printf("\nLargeur de l'image = %d", largeur_image);
hauteur_image = fgetc(fichier) + fgetc(fichier) * 256 + fgetc(fichier) * 65536 + fgetc(fichier) * 16777216;
printf("\nHauteur de l'image = %d", hauteur_image);
fseek(fichier, offset, SEEK_SET); //debut des premières données
compteur = 0;
for(i=0; i<hauteur_image; i++)
{
for(j=0;j<largeur_image;j++)
{
pixel = fgetc(fichier);
if (pixel == 255)
{
compteur++;
}
}
}
fclose(fichier);
printf("\n\nValeur 255 apparait %d fois !!", compteur);
getch();
}
Voila donc mon code et en mettant une image 1024*768, 8 bits (256 nuances de gris) j'arrive à bien lire le header de l'image, et j'arrive à bien lire les premières ligne de données de l'image, mais arrivé à un certain moment (au 10.601 ème pixel sur mon image) je n'arrive plus à lire que des 255 comme valeur.
Je ne sais pas d'ou viennent ses données qui finissent de remplir mon fichier.
Merci d'avance à toute personne pouvant m'aider à résoudre ce probleme.