begin process at 2010 02 10 04:03:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Modification de fichier BMP


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Modification de fichier BMP

samedi 14 mai 2005 à 17:44:59 | Modification de fichier BMP

titio

Bonjour,
Je souhaite afficher des images bmp, tout en ayant la possibilité de modifier ce fichier. Pour cela, je le charge en memoire, et souhaite donc recuperer un pointeur sur le debut des données. J'utilise le code suivant. En principe, la structure BITMAP, par son membre bmBits devrait me donner ce pointeur, mais la, il est NULL. Comment faire pour recuperer ce pointeur ?

Merci

 HBITMAP BitMap,CompatibleBitMap;
 PAINTSTRUCT ps;
 HDC hDC;
 HDC hdcCompatible; 
 HBITMAP bmp,oldBmp;
 BITMAP infoBmp;
 void *BitPointeur;

 BitMap=(HBITMAP)LoadImage(NULL,"Bitmap.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
 
 BeginPaint(hwnd,&ps);
 hDC=GetDC(hwnd);

 hdcCompatible = CreateCompatibleDC(hDC);
 GetObject(BitMap,sizeof(BITMAP),&infoBmp);

 cxImage = infoBmp.bmWidth;
    cyImage = infoBmp.bmHeight; 
    BitPointeur=infoBmp.bmBits;   //ce pointeur pointe sue NULL...

 SelectObject(hdcCompatible,BitMap);
 BitBlt(hDC,10,
               10,
               cxImage,
               cyImage,
               hdcCompatible,
               0,
               0,
               SRCCOPY
               );

 ReleaseDC(hwnd,hDC);

 EndPaint(hwnd,&ps);

dimanche 15 mai 2005 à 11:35:32 | Re : Modification de fichier BMP

sebseb42

y a une methode super simple si tu connais deja l'encodage de ton image : dans une bmp, la donnée commence toujours au 54eme octet.

------------------------------------------------------------------
int len;
char *buffer;
FILE *fd;

fd = fopen("mon_image.bmp", "rb");   // ouverture du fichier
fseek(fd, 0, SEEK_END);   // positionnement du "pointeur" de fichier a la fin
len = ftell(fd) - 54;   // obtention de la taille du fichier moins les 54 octets de l'en-tete
fseek(fd, 54, SEEK_SET);   // positionnement du pointeur au 54eme octet (on zap le header)
buffer = malloc(len);   // allocation de la taille memoire suffisante pour charger la donner bitmap
fread(buffer, sizeof(char), len, fd);   // on lit le fichier (a partir de la position 54 due au fseek() precedent)
fclose(fd);   // on ferme le fichier

// buffer contient la donner bitmap
------------------------------------------------------------------

cette methode est super simple, et fonctionne toujours, apres il faut quand meme lire l'entete si tu veux connaitre la taille de l'image et son format de pixel (8, 16, 24, 32 bits) mais si ton format d'image est predefini et que tu le connais, tu peux faire ca :)

dimanche 15 mai 2005 à 12:05:27 | Re : Modification de fichier BMP

titio

En effet, j'avais aussi essayé cette methode, mais dans ce cas, comment fait on pour l'afficher ??
dimanche 15 mai 2005 à 12:23:57 | Re : Modification de fichier BMP


Cette discussion est classée dans : hdc, bmp, pointeur, bitmap, infobmp


Répondre à ce message

Sujets en rapport avec ce message

Hwnd [ par T_Mehdi ] salut a tous .bon j'ai realiser une fonction qui permet douvrir des fichier bmp et les affichier sur un hwnd preci.le prob est que quand je reduit ou chargement dynamique d'image (bitmap ?) [ par Gendal67 ] Bonsoir,J'aimerai savoir si une application peut charger autre chose qu'une image bmp comme une image jpg....genre comme :BMP BITMAP DISCARDABLE "lol. Mes bitmap se barrent [ par oceax ] Salut !Voila j'ai fais une boite de dialogue en Win32 et j'ai inséré une bmp à l'aide de LoadBitmap() et pis DrawState(). Ma bitmap s'affiche impeccab Redimensionnement image Borland C++ [ par jfouquet ] Bonjour, Je travaille actuellement sous Borland C++ 5. Je suis amené à afficher une image (jpeg,bmp,ico…) dans un TImage bon ça pas de problème. Ma need help_API - debutant. [ par JimyRyan ] j'ai cree un progamme qui affiche une image (stoquee dans un fichier .bmp), et une phrase (lu a partir d'un fichier TXT), j'ai deux problemes : une fo Pixel vide [ par sabran ] Salut, Je veux lire la valeur RGB d'un pixel avec GetDIBits. J'ai pris un code que j'ai vu plusieurs fois sur le forum. Tout marche sauf quand je veux pr d'objet GDI qui augmente, help [ par gege1024 ] CPaintDC hdc(this);HBITMAP bit;BITMAP bitmap;CRect rect;GetClientRect(&rect);  bit= (HBITMAP) LoadImage (NULL,fic_img_abs,IMAGE_BITMAP,0,0,LR_DEFAULTS bitmap miniature = icon ou bitmap (comme explorateur win ) [ par gege1024 ] je cherche a faire des bitmap miniature comme pour l'explorateur windows.j'ai un dial où je selectionne des fichiers(uniquement des bmp) , je veux les Convertion d'un bitmap 8 bits en un bitmal 24 bits [ par SauCisS ] Bonjour, J'ai parcouru ce forum pour chercher ma réponse, mais sans succès. Alors voici mon problème : Comment à partir d'une image BMP 8 bits niv redimentionnement d'image, aidez-moi svp [ par sousou_one ] salut à tous,je veux construire une bitmap par copie d'une région d'une bitmap source, je dois prendre les nouvelles dimensions en sélectionnant la ré


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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 : 0,296 sec (3)

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