CBitmap保存为Bmp文件 VC++ MFC实现
来源:互联网 发布:淘宝助理选择打印机 编辑:程序博客网 时间:2024/05/16 01:00
感谢这位同学的分享:http://wenku.baidu.com/view/f4f1580b76c66137ee061903.html
将下面函数复制到自己的类中,函数为:
void CMyDlg::MySaveBmpTofile(HBITMAP hbmp, CString path)
{
//参数说明: hbmp :需保存的图象的句柄 path :保存路径
//定义文件头结构
BITMAPFILEHEADER fileHead;
int fileHeadLen = sizeof( BITMAPFILEHEADER );
//定义图象信息结构
BITMAPINFOHEADER bmpHead;
int bmpHeadLen =sizeof( BITMAPINFOHEADER );
BITMAP bmpObj;
GetObject( hbmp, sizeof(BITMAP), &bmpObj );
DWORD fileSizeInByte; //文件总的字节大小
//获取系统颜色深度,即每个象素用多少位表还示
DWORD PixelSizeInBit;
CDC srcDC; //系统屏幕设备描述表
srcDC.CreateDC( "DISPLAY", NULL, NULL, NULL);
PixelSizeInBit=srcDC.GetDeviceCaps( BITSPIXEL ) * srcDC.GetDeviceCaps( PLANES );
fileSizeInByte = fileHeadLen + bmpHeadLen + bmpObj.bmWidth*bmpObj.bmHeight*PixelSizeInBit/8;
//初始化文件头结构
fileHead.bfOffBits = fileHeadLen + bmpHeadLen;
fileHead.bfReserved1=0;
fileHead.bfReserved2=0;
fileHead.bfSize = fileSizeInByte;
fileHead.bfType = 0x4D42;
///初始图像信息结构
bmpHead.biBitCount = PixelSizeInBit;
bmpHead.biCompression = BI_RGB;
bmpHead.biPlanes = 1;
bmpHead.biHeight = bmpObj.bmHeight;
bmpHead.biWidth = bmpObj.bmWidth;
bmpHead.biSize = bmpHeadLen;
//为文件分配空间
PBYTE pFile=new byte[ fileSizeInByte ];
memset( pFile, 0, fileSizeInByte );
//填充文件头部
memcpy( pFile, (PBYTE)&fileHead, fileHeadLen);
//填充文件信息头部结构
memcpy( pFile+fileHeadLen, (PBYTE)&bmpHead, bmpHeadLen);
//填充象素部分
GetDIBits( srcDC.m_hDC, hbmp, 0, bmpObj.bmHeight, pFile+fileHeadLen+bmpHeadLen, (LPBITMAPINFO)(pFile+fileHeadLen), DIB_RGB_COLORS);
//打开文件并写入数据
HANDLE hFile;
hFile=CreateFile( path, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);
if( hFile==INVALID_HANDLE_VALUE )
{
MessageBox( "创建文件失败" );
return;
}
DWORD nByteTransfered;
WriteFile( hFile, pFile, fileSizeInByte, &nByteTransfered, NULL);
CloseHandle( hFile );
//清理
delete pFile;
srcDC.DeleteDC();
}
在调用的时候,使用如下方式:
MySaveBmpTofile((HBITMAP)bitmap,"F:\\2.bmp");
- CBitmap保存为Bmp文件 VC++ MFC实现
- VC/MFC实现:位图CBitmap对象保存成为bmp,bmp转jpg,截屏保存jpg(GDI+)
- 保存CBitmap为bmp图片
- VC屏幕截图,保存为Bmp文件
- VC屏幕截图,保存为Bmp文件
- VC将自定义画图区域保存为BMP文件
- VC屏幕截图并保存为bmp文件
- VC屏幕截图并保存为bmp文件
- CBitmap转HBITMAP以及CBitmap、HBITMAP图片信息保存在.bmp文件下
- VC/MFC怎样将位图CBitmap对象保存成为bmp格式文件?(你在网上找的不一定灵,看我的一定灵)
- 如何实现WinCE截屏并保存为BMP文件
- WinCE实现屏幕截图并保存为BMP文件
- *.bmp序列保存为*.raw文件[matlb实现]
- 保存CBitmap到文件
- CBitmap 保存到文件
- 保存HBitmap,CBitmap文件
- VC将WORD保存为BMP
- VC/MFC读取BMP文件并显示
- WebService 一些异常
- firebug的使用
- CodeDom使用
- 性能专题
- 收集了一些python的文章(太牛了)
- CBitmap保存为Bmp文件 VC++ MFC实现
- float double 比较大小问题
- CMap-结构体键值使用
- typedef和#define的用法与区别
- AVR单片机主机SPI读数据
- HP网络打印机的初始设置问题
- linux上广播消息
- Javah生成JNI头文件出现找不到类的错误
- VS2010快捷键大全