读书人

vc中怎么保存位图到硬盘上

发布时间: 2012-04-13 13:50:24 作者: rapoo

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 );} 

读书人网 >VC/MFC

热点推荐