Bonjour,
J'ai utilisé le code ci-dessous afin de créer un bitmap de 256*256 en fonction des valeur que je récupère dans un fichier texte.
Maintenant je voudrais pouvoir réalisé des bitmap des taille variable. J’essaie donc de modifier la taille de mon bmp en passant iWidth et iHeight à de nouvelle valeurs puis lorsque j'exécute mon code le bmp est crée mais j'au un drawing failed lorsque j'ouvre le bmp ensuite.
Y à t-il quelque chose d'autre que iWidth et iHeight à modifier pour pouvoit changer les dimensions ou quelque chose à rajouter?
Voici le code en question:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
void filtre::Create_Save_BMP()
{
 
	std::ifstream fichier("./filtre1.txt", std::ios::in);
 
	 char caractere;
	int c=0,i=0;
    int x=0;
    int iWidth = 256;
    int iHeight = 256;
    HANDLE file;
    BITMAPFILEHEADER fileHeader;
    BITMAPINFOHEADER fileInfo;
    RGBTRIPLE image;
    DWORD write = 0;
 
    file = CreateFile("examplea.bmp",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
    fileHeader.bfType = 19778;
    fileHeader.bfSize = sizeof(fileHeader.bfOffBits) + sizeof(RGBTRIPLE);
    fileHeader.bfReserved1 = 0;
    fileHeader.bfReserved2 = 0;
    fileHeader.bfOffBits = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
 
    fileInfo.biSize = sizeof(BITMAPINFOHEADER);
    fileInfo.biWidth = iWidth;
    fileInfo.biHeight = iHeight;
    fileInfo.biPlanes = 1;
    fileInfo.biBitCount = 24;
    fileInfo.biCompression = BI_RGB;
    fileInfo.biSizeImage = 0;
    fileInfo.biXPelsPerMeter = 0;
    fileInfo.biYPelsPerMeter = 0;
    fileInfo.biClrImportant = 0;
    fileInfo.biClrUsed = 0;
 
    WriteFile(file,&fileHeader,sizeof(fileHeader),&write,NULL);
    WriteFile(file,&fileInfo,sizeof(fileInfo),&write,NULL);
 
 
    while((i < (iWidth*iHeight))&&(fichier.get(caractere)))
    {
 
        if(caractere=='0')
           {
			x=254;
			}
        else 
		{
			x=4;
		}
        image.rgbtBlue = x-1;
        image.rgbtGreen = x-1;
        image.rgbtRed = x-1;
        WriteFile(file, &image, sizeof(RGBTRIPLE), &write, NULL);
		i++;
 
    }
    CloseHandle(file);
	fichier.close();
 
}
Merci de votre aide