Fichier Bitmap et programmation en C...

Fichier Bitmap et programmation en C... - Programmation

Marsh Posté le 27-10-2001 à 20:34:21    

Un pb à vous exposer...
 
Je souhaite afficher un Bitmap sous DOS en utilisant la bibliothèque graphics.h (fonctions BGI) et en particulier putpixel (affichage pixel par pixel à l'écran).
 
J'ai réussi à savoir comment est organisé le fichier Bitmap (2 entêtes + 1 palette de couleur (éventuelle) + la zone de données bitmap, cad les pixels)  :)  
 
J'ai réussi à lire les entêtes  :hap:  
 
Mon pb : je n'arrive pas à lire la zone de données pixel ; je ne sais pas sûre de sa structure en fait   :fou: :??:
 
D'autant qu'il existe +sieurs types de Bitmap...
   - monochrome (1 bit / pixel)
   - 16 couleurs (4 bits / pixel)
   - 256 couleurs (8 bits / pixel)
   - 24 bits (24 bits = 3 octets / pixel)
 
La zone de données pixels va contenir hauteur x largeur pixels dans le fichier mais organisés comment ???  :sweat:  Là est la question !!!!
 
Si qqn a une idée ou une astuce à me proposer, don't hesitate ;)  
 
Kason, une nouvelle sur le forum  :hello:

Reply

Marsh Posté le 27-10-2001 à 20:34:21   

Reply

Marsh Posté le 27-10-2001 à 20:51:20    

si par fichier bitmap tu entends .bmp, il suffit de chercher sur google : http://www.google.com/search?q=bmp+file+format
 
windows a des fonctions pour lire directement un .bmp, aussi. cherche dans la msdn ...

Reply

Marsh Posté le 27-10-2001 à 21:02:57    

?
pour afficher mais par pour lire

Reply

Marsh Posté le 27-10-2001 à 21:10:22    

je copie colle de ma vieille msdn locale :
 
LoadImage
The LoadImage function loads an icon, cursor, or bitmap.
 
HANDLE LoadImage(
  HINSTANCE hinst,   // handle of the instance containing the image
  LPCTSTR lpszName,  // name or identifier of image
  UINT uType,        // type of image
  int cxDesired,     // desired width
  int cyDesired,     // desired height
  UINT fuLoad        // load flags
);
 
y'a aussi BITMAPFILEHEADER, BITMAPINFOHEADER, etc ...

Reply

Marsh Posté le 27-10-2001 à 21:12:57    

autant pour moi
me souvenait pu que celle la pouvait aussi faire les bmp

Reply

Marsh Posté le 28-10-2001 à 12:37:10    

youdontcare a écrit a écrit :

je copie colle de ma vieille msdn locale :
 
LoadImage
The LoadImage function loads an icon, cursor, or bitmap.
 
HANDLE LoadImage(
  HINSTANCE hinst,   // handle of the instance containing the image
  LPCTSTR lpszName,  // name or identifier of image
  UINT uType,        // type of image
  int cxDesired,     // desired width
  int cyDesired,     // desired height
  UINT fuLoad        // load flags
);
 
y'a aussi BITMAPFILEHEADER, BITMAPINFOHEADER, etc ...  




 
tu as eu où ces infos ?
comment on y accède ?  :D

Reply

Marsh Posté le 28-10-2001 à 19:24:25    

uppppppppp  :D  :D  :D

Reply

Marsh Posté le 28-10-2001 à 19:36:52    

MSDN Library

Reply

Marsh Posté le 28-10-2001 à 20:18:36    

airseb a écrit a écrit :

 
 
tu as eu où ces infos ?
comment on y accède ?  :D  



http://msdn.microsoft.com
 
ça marche aussi avec google (:love:) quand tu recherches un truc comme "windows function bmp loading"
 
http://www.google.com/search?sourc [...] mp+loading

Reply

Marsh Posté le 28-10-2001 à 20:22:28   

Reply

Marsh Posté le 28-10-2001 à 23:06:13    

Je vous remercie pour vos réponses  :wahoo: :)  
 
@ +  :hello:
 
kason
----------------------------------

Citation :

Ab uno disce omnes

Reply

Marsh Posté le 29-10-2001 à 23:35:51    

up   :wahoo: :)
 
kason
 

Citation :

Du sublime au ridicule, il n'y a qu'un seul pas, Napoléon Bonaparte


---------------
Seul le calme paisible d'un lac peut endiguer la force furieuse d'un torrent.
Reply

Marsh Posté le 30-10-2001 à 11:18:44    

Si tu arrives à obtenir un pointeur vers la zone de données, ton problème est résolu!
 
Pour comprendre la structure de la zone de donnée, tu fais une petite image simple (4x4 pixels par exemple) et tu analyses ce qu'il y a dedans (commence par le 24bits ou le monochrome, c'est le plus simple car il n'y a pas de palette).
 
Donc si tu fais une image de 4x1 pixels en 24 bits de ce style :
 
                       1             2           3           4
Composante Rouge :     255           0           0           255
Composante Verte :     0             255         0           255
Composante Bleue :     0             0           255         255
 
Ta zone de donnée devrait se présenter sous cette forme :
FF 00 00 00 FF 00 00 00 FF FF FF FF
\------/ \------/ \------/ \------/
    1       2        3         4
 
(Je ne suis pas sûr de l'ordre des pixels ni de l'ordre des composantes, fais des essais)
 
Pour le monochrome: si le bit est à 1, tu mets un point ; si le bit est à 0, tu affiches rien.
Pour le 16 couleurs et le 256 couleurs, c'est le bordel car il faut que tu ailles voir dans la palette la couleur correspondant à ce que tu lis (j'ai jamais essayé de jouer avec les palettes).
 
Je parle ici d'une image non compressée (mais ça doit pas être trop dur de décoder le RLE).


---------------
each day I don't die is cheating
Reply

Marsh Posté le 30-10-2001 à 15:27:25    

youdontcare a écrit a écrit :

je copie colle de ma vieille msdn locale :
 
LoadImage
The LoadImage function loads an icon, cursor, or bitmap.
 
HANDLE LoadImage(
  HINSTANCE hinst,   // handle of the instance containing the image
  LPCTSTR lpszName,  // name or identifier of image
  UINT uType,        // type of image
  int cxDesired,     // desired width
  int cyDesired,     // desired height
  UINT fuLoad        // load flags
);
 
y'a aussi BITMAPFILEHEADER, BITMAPINFOHEADER, etc ...  




je crois qu'elle sous Borland C++ 2.5 (version DOS)... alors ça va pas le faire :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed