急、急,请高手过来帮忙啊,怎么将缓冲区数据保存到图像,分不多,请多包涵。

sulyna1 2010-09-07 10:51:56
怎么将缓冲区数据保存到图像?比如说bitmap,生成dib后再生成一种文件格式,保存到某个路径下。先谢谢了。
...全文
85 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2010-09-27
  • 打赏
  • 举报
回复
DIB,参考一下MSDN上的BITMAPINFO
cpp2017 2010-09-27
  • 打赏
  • 举报
回复
BOOL WINAPI SaveBmpHandleToFile(HANDLE hDib, LPCTSTR pszFileName)
{
BITMAPFILEHEADER bmfHdr;
LPBITMAPINFOHEADER lpBI;
DWORD dwDIBSize;

if (hDib == NULL)
return FALSE;

lpBI = (LPBITMAPINFOHEADER) ::GlobalLock((HGLOBAL) hDib);
if (lpBI == NULL)
return FALSE;



bmfHdr.bfType = ((WORD) ('M' << 8) | 'B'); // "BM"

dwDIBSize = *(LPDWORD)lpBI + ::GetPaletteSize((LPSTR)lpBI);

if ((lpBI->biCompression == BI_RLE8) || (lpBI->biCompression == BI_RLE4))
{
dwDIBSize += lpBI->biSizeImage;
}
else
{
DWORD dwBmBitsSize;
dwBmBitsSize = ( ( (lpBI->biWidth)*((DWORD)lpBI->biBitCount) + 31) / 32 * 4) * lpBI->biHeight;
dwDIBSize += dwBmBitsSize;
lpBI->biSizeImage = dwBmBitsSize;
}

bmfHdr.bfSize = dwDIBSize + sizeof(BITMAPFILEHEADER);
bmfHdr.bfReserved1 = 0;
bmfHdr.bfReserved2 = 0;

bmfHdr.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) + lpBI->biSize
+ GetPaletteSize((LPSTR)lpBI);




CFile file;
file.Open(pszFileName,CFile::modeCreate|CFile::modeWrite);

file.Write((LPSTR)&bmfHdr, sizeof(BITMAPFILEHEADER));
//file.WriteHuge(lpBI, dwDIBSize);
file.Write(lpBI, dwDIBSize);

::GlobalUnlock((HGLOBAL) hDib);
file.Close();
//转换成jpg

return TRUE;
}
sulyna 2010-09-27
  • 打赏
  • 举报
回复
黑白、灰度图像bmh.bfOffBits 要加上调色板长度、要写调色板,黑白图像要内存对齐,彩色图像没有调色板
sulyna1 2010-09-07
  • 打赏
  • 举报
回复
不能将就这么沉了,自己顶起来,难道嫌分少了?
雪山非熊 2010-09-07
  • 打赏
  • 举报
回复
黑白的彩色的?
sulyna1 2010-09-07
  • 打赏
  • 举报
回复
自己顶一下啊,高手还请帮忙哈
dirdirdir3 2010-09-07
  • 打赏
  • 举报
回复
自己写个bimapfileheader,然后保存,接着保存bimapinfoheader,接着数据..........
wltg2001 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用楼主 sulyna1 的回复:]
怎么将缓冲区数据保存到图像?比如说bitmap,生成dib后再生成一种文件格式,保存到某个路径下。先谢谢了。
[/Quote]
说的不清楚啊。
一般的方法,对于缓冲区的数据可以用SetDIBits写入到一个HBITMAP对象中去。然后也可以将HBITMAP对象保存为一个文件。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧