70,037
社区成员
发帖
与我相关
我的任务
分享int main()
{
BITMAPFILEHEADER FileHeader; // The bitmap file header
BITMAPINFO info;
int ImageSize;
FILE* file = fopen("E:\\1.bmp", "rb");//图1是我要读取的图,已知,是8位位图
FILE *out = fopen("E:\\33.bmp", "wb");
fread(&FileHeader, sizeof(BITMAPFILEHEADER), 1, file); // Read the bitmap file heade
fwrite(&FileHeader, sizeof(BITMAPFILEHEADER), 1, out);
if (FileHeader.bfType != 0x4D42)
{
fclose(file);
return false;
}
fread(&info.bmiHeader, sizeof(BITMAPINFOHEADER), 1, file);
fwrite(&info.bmiHeader, sizeof(BITMAPINFOHEADER), 1, out);
int m_width = info.bmiHeader.biWidth;
int m_height = info.bmiHeader.biHeight;
int m_bpp = info.bmiHeader.biBitCount;
if (info.bmiHeader.biClrUsed != 0)
{//带颜色表
ImageSize = info.bmiHeader.biSizeImage;
}
else
{//不带颜色表的
ImageSize = m_height*(m_width*m_bpp+31)/8; ////
}
PBYTE m_data = NULL;
m_data = new BYTE [ImageSize];
memset(m_data, 0, ImageSize);
fread(m_data, 1, ImageSize, file);
fwrite(m_data, 1, ImageSize, out);
return 0;
}int main()
{
FILE* file = fopen("E:\\1.bmp"", "rb");//图1是我要读取的图,已知,是8位位图
FILE *out = fopen("E:\\33.bmp", "wb");
const int nSize = 1024*1024;
char *pData = (char *)malloc(nSize);
memset(pData, 0, nSize);
while(!feof(file))
{
int nRead = fread(pData, 1, nSize, file);
if (nRead)
fwrite(pData, 1, nRead, out);
else
break;
}
free(pData);
fclose(file);
fclose(out);
return 0;
}