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 62
|
void filtre::Create_Save_BMP()
{
std::ifstream fichier("./tri.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 (strcmp(&caractere,"0")==0)// le probleme doit je pense se situer au niveau de cette condition
{
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();
} |
Partager