最近用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:希望大家多多留言交流心得,共同学习,共同进步!谢谢!
本文介绍了一种使用C++进行图像处理的方法,通过将缓冲数据写入位图来辅助调试。文中详细展示了创建位图文件头和位图信息头的过程,并提供了完整的代码示例。
1525

被折叠的 条评论
为什么被折叠?



