begin process at 2012 05 29 09:32:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

System

 > 

Image Bitmap langage C


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

Image Bitmap langage C

jeudi 20 janvier 2011 à 17:55:28 | Image Bitmap langage C

buguetj

Bonjour, je suis actuellement en train de faire des manipulation sur des fichiers bitmap en langage C. J'utilise les api fournies par windows. Je cherche a créer un fichier bitmap (j'ai reussi), et a donner une valeur a chaque pixel de l'image. J'utilise pour ceci deux boucles. J'ai fait quelques recherche et je tente d'utiliser l'api SetPixel(). Cependant, j'obtiens bien mon fichier bitmap crée mais le contenu est uniquement des pixels noirs. Pourriez vous m'aider svp en me disans ce qu'il faudrait corriger dans mon code: (Voici la partie du code correspondant à cela)

//Declaration des variables
BITMAPFILEHEADER fileHeader;
BITMAPINFOHEADER infoHeader;
int bitmap_dx = largeur;
int bitmap_dy = hauteur;
HANDLE hLogFile;
BITMAPINFO info;
BYTE* memory = 0;
HBITMAP bitmap;
LPDWORD dwBytesWritten;
HDC winDC = NULL;
int i;
int j;
HDC memDC;
HBITMAP hBitmap;


ZeroMemory(&fileHeader, sizeof(BITMAPFILEHEADER));

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

//Remplissage des headers
infoHeader.biCompression = 0; // BI_RGB;
infoHeader.biXPelsPerMeter = 0;
infoHeader.biYPelsPerMeter = 0;
infoHeader.biSizeImage = 0;
infoHeader.biClrUsed = 0;
infoHeader.biClrImportant = 0;
infoHeader.biSize = sizeof(infoHeader);
infoHeader.biWidth = bitmap_dx;
infoHeader.biHeight = bitmap_dy;
infoHeader.biPlanes = 1;
infoHeader.biBitCount = 24;
infoHeader.biCompression = BI_RGB;

//Creation du fichier bitmap
hBitmap = CreateCompatibleBitmap(memDC, bitmap_dx, bitmap_dy);
hLogFile = CreateFile(
"C:\\Users\\Jonathan\\Documents\\Traitement d'image\\essai.bmp",
GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, 0, NULL);

//Ecriture des header dans le fichier
WriteFile(hLogFile, &fileHeader, sizeof(fileHeader), &dwBytesWritten, NULL);
WriteFile(hLogFile, &infoHeader, sizeof(infoHeader), &dwBytesWritten, NULL);

info.bmiHeader = infoHeader;

memDC = CreateCompatibleDC(winDC);

// Remplissage BMP
//C'est donc ici que j'utilise l'api SetPixel.
for (i = 0; i < bitmap_dx; ++i) {
for (j = 0; j < bitmap_dy; ++j) {
// SetPixel(memDC, i, j, 0x00FF0000); // http://msdn.microsoft.com/en- //us/library/dd183449(v=vs.85).aspx


}
}

BitBlt(memDC, 0, 0, bitmap_dx, bitmap_dy, winDC, 0, 0, SRCCOPY);

bitmap = CreateDIBSection(winDC, &info, DIB_RGB_COLORS, (void**) & memory,
0, 0);
SelectObject(memDC, bitmap);
DeleteDC(memDC);
ReleaseDC(NULL, winDC);


Merci d'avance à ceux qui m'aideront
Jonathan.


jeudi 20 janvier 2011 à 21:49:48 | Re : Image Bitmap langage C

BruNews

Administrateur CodeS-SourceS
HWND TO BMP FILE (2) (WIN32)
http://www.cppfrance.com/code.aspx?id=11139

ciao...
BruNews, MVP VC++
vendredi 21 janvier 2011 à 10:51:39 | Re : Image Bitmap langage C

buguetj

Salut,
merci beaucoup BruNews pour ta réponse.
J'ai une petite question qui vient se greffer du fait de l'implémentation de ta proposition.
Je souhaiterais que le tableau de RGBQUAD soit alloué dynamiquement.
J'utilise donc malloc en faisant:
RGBQUAD *colors;
colors=(RGBQUAD*)malloc(largeur*hauteur*sizeof(RGBQUAD));

Cependant quand je fais ça, tout compile bien, mais mon image de sortie est très bizarre.

Auriez vous une petite idée?
Merci

Jonathan


Cette discussion est classée dans : bitmap, sizeof, memdc, infoheader, fileheader


Répondre à ce message

Sujets en rapport avec ce message

Bitmap [ par sebastienbro ] Bonjour à tous ! Voilà, en fait, je cherche à enregistrer un bitmap à partir d'un HDC ! En fait ça n'est pas pour l'enregistrer mais pour le compresse Surlignage semi transparent dans un Bitmap ? [ par TigWdz ] Bonjour, je voudrais faire du surlignage dans une bitmap. Je m'explique : J'ai une bitmap qui représente du texte, et je veux, à la manière d'un marqu problème de relecture dans un fichier [ par Mastersam ] bonjour, j'ai créé une structure:typedef struct headerstruct{       char nom[32];       int taille;       long debut;}headerstruct, Button et image Bitmap sous Visul Studio [ par timy94 ] Je n'arrive pas à afficher dans mon PushButton un Bitmap créé avec les ressources de VC++. "Visual Studio"Dans mon CALLBACK, j'utilise le code suivant Afficher un Icône dans un Bouton [ par timy94 ] Bonjour,Après avoir cherché et trouvé grace à l'aide de ccpfrancre la manière de faire pour apparaitre un  bitmap dans un boutoun.C'est pas sorcier ma mettre un bitmap sur un fond qui a deja un bitmap, pb [ par gege1024 ] voila: j'ai un dialogue avec une image en fond (bacground),par dessus je veux afficher un autre bitmap, mais le pb est que celui-ci s'affiche avec une Problème avec Allegro [ par tikof ] Bonjour à tous, Voila j'ai vu une source sur le site qui montrait comment afficher un rond et pouvoir le bouger sur un fond à l'écran avec allegro en bitmap dans une fenetre DOS [ par chinois57 ] je voudrai ajouter une image dans mon programme est ce possible#include #include intmain(){   system ("MODE CON: cols=70 lines=40");   system ("TITLE Problème avec TransparentBlt [ par NAVIE ] Bonjour, j'écris ce message au sujet d'une fonction appellée: TransparentBlt(). Celle ci est pratique pour dessiner un bitmap toutefois je n'arrive pa Background boite de dialogue [ par alf03 ] Bonjour à toutes et à tous,Je cherche à desiner par dessus une bitmap se trouvant dans une boite de dialogue.Mais malheureusement, mes dessins apparai


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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,515 sec (3)

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