求已知R,G,B分量,宽,高转换成BMP文件的源码!谢谢
ww012 2004-06-17 04:17:23 下面是我写的有问题,请高手帮帮忙,能不能写全它!
谢谢^_^
long m_WidthOfModel=352;
long m_HeightOfModel=288;
BITMAPFILEHEADER bmfHdr; //定义文件头
BITMAPINFOHEADER bmiHdr; //定义信息头
//对信息头进行赋值
bmiHdr.biSize = sizeof(BITMAPINFOHEADER);
bmiHdr.biWidth = m_WidthOfModel;
bmiHdr.biHeight = m_HeightOfModel;
bmiHdr.biPlanes = 1;
bmiHdr.biBitCount = 24;
bmiHdr.biCompression = BI_RGB;
bmiHdr.biSizeImage = m_WidthOfModel*m_HeightOfModel;
bmiHdr.biXPelsPerMeter = 0;
bmiHdr.biYPelsPerMeter = 0;
bmiHdr.biClrUsed = 0;
bmiHdr.biClrImportant = 0;
//对文件头进行赋值
bmfHdr.bfType = (WORD)0x4D42;//;((WORD)('M'<<8) | 'B')
bmfHdr.bfSize=(DWORD)(sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD)*256 + m_WidthOfModel*m_HeightOfModel);
bmfHdr.bfReserved1 = 0;
bmfHdr.bfReserved2 = 0;
bmfHdr.bfOffBits=(DWORD)(sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD)*256);
//保存文件
CFile fp;
fp.Open("f:\\Model.bmp",CFile::modeCreate | CFile::modeWrite);
fp.Write((LPSTR)&bmfHdr,sizeof(BITMAPFILEHEADER)); //写文件头
fp.Write((LPSTR)&bmiHdr,sizeof(BITMAPINFOHEADER)); //写信息头