begin process at 2012 02 08 09:31:47
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > INFO : STRUCTURE DU FORMAT BMP

INFO : STRUCTURE DU FORMAT BMP


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Niveau :Débutant Date de création :09/12/2003 Vu :9 568

Auteur : vow

Ecrire un message privé
Site perso
Commentaire sur cette source (13)
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


 Sources du même auteur

Source avec Zip ENVOI DE MAIL AVEC ATTACHEMENTS, VIA MAPI32

 Sources de la même categorie

Source avec Zip WIN32 TLS LENT par dguilmain
Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64) par BruNews
Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip DELETE DIRECTORY (WIN64) par BruNews
Source avec Zip ENUM DIRECTORY (WIN64) par BruNews

Commentaires et avis

Commentaire de vow le 22/12/2003 16:17:02

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

Commentaire de ymerej le 06/05/2004 11:13:42

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

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 ! ++

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

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 ;)

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.

Commentaire de Jhep le 08/11/2009 23:54:41

%$@#?! c'est quoi ce binz quand on copie le code il y a des * au début de chaque ligne (avec Firefox) ! c'est pas sérieux

Commentaire de vow le 09/11/2009 11:28:44

Le problème ne vient pas de ce code, mais de Firefox (tous les codes réagissent de cette manière)
Je te conseille d'utiliser le bouton "copier dans le presse papier" au-dessus de la zone de code ;=

Commentaire de Jhep le 09/11/2009 17:48:30

désolé je n'avais pas l'intention d'attaquer l'auteur de ce code qui m'a été très utile, mais le(s) webmaster(s) qui a laissé un bug aussi ridicule dans son site, pour une communauté de developpers ça fait tâche. Soit dit en passant j'avais bien vu le bouton "copier coller", qui est une demi solution quand la plus part du temps on a besoin que d'une partie du code (et le copier coller est une fonction commune à toutes les application, il n'est pas naturel de l'utiliser comme fonction d'une app en particulier). cependant il est _hors de question_ que j'aille modifier les paramètres avancés de mon navigateur au risque de le dérégler pour obtenir une fonctionnalité qui devrait "aller de soi".

Commentaire de vow le 09/11/2009 23:52:22

Pas de soucis :)

Commentaire de Jhep le 12/11/2009 20:35:46

Auteur : vow

je n'avais pas vu cette mention...

y a t il un modo dans la salle ?!

Commentaire de snake007 le 22/12/2009 11:08:59

salut VOW,
j'utilise cette structure mais j'ai un problème,
une fois mon image créer, elle à une résolution horizontale verticale étrange.
17986239ppp (variable) en horizontale et 1ppp en verticale, pour une profondeur de 24.
et des fois l'image n'est pas visible du tout, mais toujours impossible à ouvrir avec paint, fond blanc.
enfin bref j'ai récupere le code d'un collègue et ca me ferais gagner du temps si tu pouvais m'aider merci.
Ce que je voudrais ce que tu me donne un exemple avec des valeurs simple de toutes les variables. si c'est pas trop demander ^^


voici un bout du code :

// save bitmap file headers
BITMAPFILEHEADER fileHeader;
BITMAPINFOHEADER infoHeader;

ZeroMemory(&fileHeader, sizeof(BITMAPFILEHEADER));

fileHeader.bfType          = 0x4d42;
fileHeader.bfOffBits       = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);

infoHeader.biSize          = sizeof(infoHeader);
infoHeader.biWidth         = bitmap_dx;
infoHeader.biHeight        = bitmap_dy;
infoHeader.biPlanes        = 1;
infoHeader.biBitCount      = 24;
infoHeader.biCompression   = BI_RGB;
//infoHeader.biXPelsPerMeter = 0;
//infoHeader.biYPelsPerMeter = 0;

HANDLE hLogFile = CreateFile(filename, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, 0, NULL) ;
WriteFile(hLogFile, &fileHeader, sizeof(fileHeader) , &dwBytesWritten, NULL) ;
WriteFile(hLogFile, &infoHeader, sizeof(infoHeader) , &dwBytesWritten, NULL) ;

BITMAPINFO info;
info.bmiHeader = infoHeader;
HDC memDC = CreateCompatibleDC(winDC);
BYTE* memory = 0;
HBITMAP bitmap = CreateDIBSection(winDC, &info, DIB_RGB_COLORS, (void**)&memory, 0, 0);
SelectObject(memDC, bitmap);

BitBlt(memDC, 0, 0, bitmap_dx, bitmap_dy, winDC, 0, 0, SRCCOPY);
DeleteDC(memDC);
ReleaseDC(NULL, winDC);

Commentaire de snake007 le 22/12/2009 11:54:53

j'ai trouver, merci, voila ce que j'ai changer au cas où ^^

infoHeader.biCompression   = 0; //BI_RGB;
infoHeader.biXPelsPerMeter = 0;
infoHeader.biYPelsPerMeter = 0;
infoHeader.biSizeImage     = 0;
infoHeader.biClrUsed     = 0;
infoHeader.biClrImportant  = 0;

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,340 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales