VC++如何将缓冲数据写入到位图中

本文介绍了一种使用C++进行图像处理的方法,通过将缓冲数据写入位图来辅助调试。文中详细展示了创建位图文件头和位图信息头的过程,并提供了完整的代码示例。

最近用C++做图像方面的处理,发现将缓冲数据写到位图中,对调试有很大的帮助,能够清楚的看见问题出在哪儿。

现在将这块的实现代码贴上,希望对大家有所帮助:

                BITMAPFILEHEADER bfh;
		BITMAPINFOHEADER bi;
		bfh.bfType=0x4d42;
		bfh.bfOffBits=54;
		bfh.bfSize=320*240*3+54;
		bfh.bfReserved1=0;
		bfh.bfReserved2=0;

		bi.biWidth=320;
		bi.biSize=40;
		bi.biHeight=240;
		bi.biPlanes=1;
		bi.biBitCount=24;
		bi.biCompression=0;
		bi.biSizeImage=0;
		bi.biXPelsPerMeter=0;
		bi.biYPelsPerMeter=0;
		bi.biClrImportant=0;
		bi.biClrUsed=0;
		BYTE *pbuffer=new BYTE[bfh.bfSize];
		memcpy(pbuffer,&bfh,14);
		memcpy(pbuffer+14,&bi,40);
		memcpy(pbuffer+54,cpyDest,320*240*3);
		WCHAR* filepath = new WCHAR[MAX_PATH];
		wcscpy(filepath, g_TempPath);

		HANDLE bmpFile = CreateFile(
			filepath, GENERIC_WRITE, FILE_SHARE_READ, NULL,
			CREATE_ALWAYS, NULL, NULL );
		DWORD dwWritten = 0;
		if (bmpFile != NULL) 
		{  
			WriteFile( bmpFile, pbuffer, 320*240*3+54, &dwWritten, NULL ); //位图数据 
		} 
		CloseHandle( bmpFile ); 
		delete []filepath;
		delete []pbuffer;
稍微做一下说明:上面有两个头部信息-位图头部和文件头部信息。其中位图头部信息大小为40个字节,而文件头部信息大小为14个字节。
PS:希望大家多多留言交流心得,共同学习,共同进步!谢谢!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值