Bonjour,
Je développe dans quelques langages, mais je débute en C++.
J'essaie de créer et copier des fichiers bitmap à partir d'une classe Bitmap en utilisant des structures des différents headers d'une image bitmap.
Le programme fonctionne presque, j'ai juste un problème au niveau du premier header :
Quand j'initialise mon objet bitmap de cette façon (où FH est de type BmpFileHeader) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 typedef struct { // unsigned short type; /* Les caractères "BM" qui indiquent le type du fichier */ unsigned char type1; /* Les caractères "BM" qui indiquent le type du fichier */ unsigned char type2; /* Les caractères "BM" qui indiquent le type du fichier */ unsigned int size; /* La taille totale du fichier */ unsigned short reserved1; /* réservé pour stocker l'application d'origine */ unsigned short reserved2; /* réservé pour stocker l'application d'origine */ unsigned int offset; /* Adresse de l'offset où commence le stockage des pixels de l'image */ } BmpFileHeader;
Je me retrouve dans mon fichier avec ces octets suivants :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 // this->FH.type=19778;//=>BM this->FH.type1='\x42';//=>B this->FH.type2='\x4D';//=>M this->FH.size=(unsigned int)(this->IH.height*this->IH.width*3+54);//dans l'exemple, 120054
au lieu de :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 42 4D 3B 00 F6 D4 01 00
J'ai remplacé la variable initiale type de type unsigned short par deux variables de type char, le problème reste le même.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 42 4D F6 D4 01 00
J'ai vérifié la taille des char, short et int avec des sizeof, mais ça correspond bien à ce qui est attendu (1 pour le char, 2 pour le short et 4 pour les int).
Si je modifie l'ordre des variables dans la structure, il y a toujours 2 octets en plus après les octets 42 4D.
Si je vire les deux octets en trop, mon fichier est bien interprété et affiché comme une image bitmap.
Je travaille sous Windows avec NetBeans ou DevCpp.
Si quelqu'un a une idée, je suis preneur, je ne sais pas d'où peuvent venir ces octets supplémentaires.
Merci d'avance.
Partager