vc中如何保存位图到硬盘上 请问下vc中如何保存位图到硬盘上。如何实现。谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://blog.163.com/zgkingdom@126/blog/static/2273473200821351854167/ // pData为rgb24数据,width为位图宽度,height为位图高度,filename为位图文件的名字, bitCount位图的位数:24,或者 32void Snapshot( unsigned char * pData, int width, int height, const char * filename, int bitCount ){ //int bitCount = 32; int bytes = bitCount / 8; int size = width*height*bytes; // 每个像素点3个字节 // 位图第一部分,文件信息 BITMAPFILEHEADER bfh; bfh.bfType = 0x4d42;//0×4d42; //bm bfh.bfSize = size // data size + sizeof( BITMAPFILEHEADER ) // first section size + sizeof( BITMAPINFOHEADER ) // second section size ; bfh.bfReserved1 = 0; // reserved bfh.bfReserved2 = 0; // reserved bfh.bfOffBits = bfh.bfSize - size; // 位图第二部分,数据信息 BITMAPINFOHEADER bih; bih.biSize = sizeof(BITMAPINFOHEADER); bih.biWidth = width; bih.biHeight = height; bih.biPlanes = 1; bih.biBitCount = bitCount; bih.biCompression = 0; bih.biSizeImage = size; bih.biXPelsPerMeter = 0; bih.biYPelsPerMeter = 0; bih.biClrUsed = 0; bih.biClrImportant = 0; FILE * fp = fopen( filename, "wb"); if( !fp ) return; //writeLog("fileheader size=%d\r\n", sizeof(BITMAPFILEHEADER)); fwrite( &bfh, 1, 14 /*sizeof(BITMAPFILEHEADER)*/, fp ); //writeLog("infoheader size=%d\r\n", sizeof(BITMAPINFOHEADER)); fwrite( &bih, 1, sizeof(BITMAPINFOHEADER), fp ); //writeLog("framesize size=%d\r\n", size); fwrite( pData, 1, size, fp ); fclose( fp );} 关于动画 MFC DLL中使用窗体,线程Setdlgitemtxt问题,人人有分拿 请教用vc设计数据库备份界面的问题!立即给分! 有个菜鸟级问题~~ 请各位帮我找一下这个帖子 一个笨笨的问题,很简单的 C++ STL(中文版)(P.J.Plauge)谁看过,给点意见,我想买,值得吗 ???? MFC调用Fortran开发的dll,exe应用程序怎么隐藏dos界面 vs2010工程中只编译单个源文件 win7上安装vs2015安装包丢失或损坏问题的解决办法 使用CenterWindow函数引起对话框窗口闪烁的问题。 BHO中Navigate对新窗口无效?
void Snapshot( unsigned char * pData, int width, int height, const char * filename, int bitCount )
{
//int bitCount = 32;
int bytes = bitCount / 8;
int size = width*height*bytes; // 每个像素点3个字节 // 位图第一部分,文件信息
BITMAPFILEHEADER bfh;
bfh.bfType = 0x4d42;//0×4d42; //bm
bfh.bfSize = size // data size
+ sizeof( BITMAPFILEHEADER ) // first section size
+ sizeof( BITMAPINFOHEADER ) // second section size
;
bfh.bfReserved1 = 0; // reserved
bfh.bfReserved2 = 0; // reserved
bfh.bfOffBits = bfh.bfSize - size; // 位图第二部分,数据信息
BITMAPINFOHEADER bih;
bih.biSize = sizeof(BITMAPINFOHEADER);
bih.biWidth = width;
bih.biHeight = height;
bih.biPlanes = 1;
bih.biBitCount = bitCount;
bih.biCompression = 0;
bih.biSizeImage = size;
bih.biXPelsPerMeter = 0;
bih.biYPelsPerMeter = 0;
bih.biClrUsed = 0;
bih.biClrImportant = 0; FILE * fp = fopen( filename, "wb");
if( !fp ) return; //writeLog("fileheader size=%d\r\n", sizeof(BITMAPFILEHEADER));
fwrite( &bfh, 1, 14 /*sizeof(BITMAPFILEHEADER)*/, fp ); //writeLog("infoheader size=%d\r\n", sizeof(BITMAPINFOHEADER)); fwrite( &bih, 1, sizeof(BITMAPINFOHEADER), fp ); //writeLog("framesize size=%d\r\n", size);
fwrite( pData, 1, size, fp );
fclose( fp );
}