vc中如何保存位图到硬盘上
请问下vc中如何保存位图到硬盘上。如何实现。谢谢
[解决办法]
http://blog.163.com/zgkingdom@126/blog/static/2273473200821351854167/
[解决办法]
- C/C++ code
// 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 );}