Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

INFO : STRUCTURE DU FORMAT BMP


Information sur la source

Catégorie :API Niveau : Débutant Date de création : 09/12/2003 Vu : 6 396

Note :
8,71 / 10 - par 14 personnes
8,71 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

Description

Il ne s'agit pas vraiment d'un code source mais plutôt d'une information sur la structure des bitmaps.
 

Source

  • struct {
  • BITMAPFILEHEADER bmfh ;
  • BITMAPINFO bmi ;
  • char img[...] ; // le Bitmap proprement dit
  • } ;
  • struct BITMAPFILEHEADER {
  • UINT bfType ; // type du fichier : doit contenir BM (ou en hexadécimal 424D)
  • DWORD bfSize ; //taille du fichier en octets
  • UINT bfReserved1 ; // réservé (doit être 0000)
  • UINT bfReserved2 ; // réservé (doit être 0000)
  • DWORD bfOffBits ; // offset des données depuis la structure
  • } ;
  • struct BITMAPINFO {
  • BITMAPINFOHEADER bmiHeader ;
  • RGBQUAD bmiColors[1] ; // Palette
  • } ;
  • struct BITMAPINFOHEADER {
  • DWORD biSize ; // nombre d'octets de la structure
  • LONG biWidth ; // largeur du bitmap en pixels
  • LONG biHeight ; // hauteur de la bitmap en pixels
  • WORD biPlanes ; // nombre de plans (doit être 0001)
  • WORD biBitCount ; // nombre d'octets par pixel (cf. Annotations finales)
  • DWORD biCompression ; // type de compression (cf. Annotations finales)
  • DWORD biSizeImage ; // taille de l'image en octets (cf. Annotations finales)
  • LONG biXPelsPerMeter ; // résolution horizontale en pixels par mètre
  • LONG biYPelsPerMeter ; // résolution horizontale en pixels par mètre
  • DWORD biClrUsed ; // nbre de couleurs utilisées (0=biBitCount) (cf. Annotations finales)
  • DWORD biClrImportant ; // nombre de couleurs considérées comme importantes pour afficher le bitmap (si non nul, toutes couleurs importantes)
  • } ;
  • struct RGBQUAD {
  • // (cf. Annotations finales)
  • BYTE rgbBlue ; // Bleu
  • BYTE rgbGreen ; // Vert
  • BYTE rgbRed ; // Rouge
  • BYTE rgbReserved ;
  • } ;
struct {
 BITMAPFILEHEADER bmfh ;
 BITMAPINFO bmi ;
 char img[...] ;  // le Bitmap proprement dit
} ;


struct BITMAPFILEHEADER {
 UINT bfType ; // type du fichier : doit contenir BM (ou en hexadécimal 424D)
 DWORD bfSize ; //taille du fichier en octets
 UINT bfReserved1 ; // réservé (doit être 0000)
 UINT bfReserved2 ; // réservé (doit être 0000)
 DWORD bfOffBits ; // offset des données depuis la structure 
} ;


struct BITMAPINFO {
 BITMAPINFOHEADER bmiHeader ;
 RGBQUAD bmiColors[1] ;  // Palette
} ;

struct BITMAPINFOHEADER {
DWORD biSize ; // nombre d'octets de la structure
LONG biWidth ; // largeur du bitmap en pixels
LONG biHeight ; // hauteur de la bitmap en pixels
WORD biPlanes ; // nombre de plans (doit être 0001)
WORD biBitCount ; // nombre d'octets par pixel (cf. Annotations finales)
DWORD biCompression ; // type de compression (cf. Annotations finales)
DWORD biSizeImage ; // taille de l'image en octets (cf. Annotations finales)
LONG biXPelsPerMeter ; // résolution horizontale en pixels par mètre
LONG biYPelsPerMeter ; // résolution horizontale en pixels par mètre
DWORD biClrUsed ; // nbre de couleurs utilisées (0=biBitCount) (cf. Annotations finales)
DWORD biClrImportant ; // nombre de couleurs considérées comme importantes pour afficher le bitmap (si non nul, toutes couleurs importantes)
} ;

struct RGBQUAD {
// (cf. Annotations finales)
 BYTE rgbBlue ;     // Bleu
 BYTE rgbGreen ;   // Vert
 BYTE rgbRed ;     // Rouge
 BYTE rgbReserved ;
} ;

Conclusion

Note sur les valeurs dans la structure BitmapInfoHeader :
* biBitCount :
      * 0001 (1) bitmap monochrome. palette à 2 entrées. Un pixel est codé sur 1 bit (0 ou 1)
      * 0004 (4) bitmap en 16 couleurs. palette à 16 entrées. Un pixel est codé sur 4 bits (0 à F)
      * 0008 (8) bitmap en 256 couleurs. palette à 256 entrées. Un pixel est codé sur 8 bits (00 à FF)
      * 0018 (24) bitmap en 16 777 216 couleurs
* biCompression :
      * 00000000 : non compressé (standard)
      * 00000002 : compression RLE 4 bits par pixel
      * 00000001 : compression RLE 8 bits par pixel
* biSizeImage :
      * taille réelle : si bitmap compressé
      * 00000000  : si bitmap non compressé
* biClrUsed :
      * 00000000 : le bitmap utilise le maximum de couleurs correspondant à la valeur de biBitCount
      * xxxxxxxx : nombre de couleurs accessibles

Note sur les valeurs dans la structure RGBQUAD :
rgbBlue, rgbGreen, rgbRed, rgbReserved répétés n fois avec :
* Si biClrUsed<>0, n=biClrUsed
* Si biClrUsed=0,
      * biBitCount=1, n=2
      * biBitCount=4, n=16
      * biBitCount=8, n=256
      * biBitCount=24, n=0

 

Commentaires et avis

signaler à un administrateur
Commentaire de vow le 22/12/2003 16:17:02

Merci pour le 1/10, ça me fait très plaisir...

signaler à un administrateur
Commentaire de ymerej le 06/05/2004 11:13:42

Moi j t mis sur 10 c exactement ce que je recharchais !
Merci encore !

signaler à un administrateur
Commentaire de Stan01 le 25/02/2006 12:02:47

Slt!
Jaurai juste aimer savoir comment tu fait ap pr afficher ac un "printf" par ex les info comme la taille du fichier ou la taille de l'image!
merci davance ! ++

signaler à un administrateur
Commentaire de bouba le 26/07/2006 15:45:48

Mouais, ni plus ni moins que la traduction de la documentation de la MSDN, c'est un peu dommage, je trouve que le sujet de Bitmaps est assez vaste sous Windows. Il aurait été souhaitable qu'il y ait plus d'informations et d'explications (différents types de Bitmaps, les Palettes, comment ça marche etc...). Des exemples d'utilisations pourraient aussi êtres utils. Je ne met pas de note, mais j'aurais sans doute mis un 1, dsl.

Bouba

signaler à un administrateur
Commentaire de vow le 23/10/2006 10:49:35

Pour répondre au dernier commentaire :
Bien sûr, j'aurais bien pu ajouter des exemples "lourds", mais ce n'était pas mon but. Surtout pour un niveau débutant ;)

signaler à un administrateur
Commentaire de bouba le 23/10/2006 13:40:38

Oui, mais avec ce que tu as mis dans cette source je doute qu'une débutant puisse utiliser les Bitmaps et les comprendre ! Y'a simplement la description de certaines structures, traduction française de http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_9qg5.asp. Les fonctions de manipulations de Bitmaps les plus utilisées seraient les bienvenues.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version


LG KP501

Entre 9€ et 159€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,437 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.