社区
图形处理/算法
帖子详情
求保存bmp位图的简单代码
daotong
2006-04-06 04:21:13
我已经把位图读取出来,并且经过处理,要把感兴趣的部分保存为另一个位图,但是结果都是文件生成了,图像却是空的。我觉得应该是文件头没处理好,反复试了试也没成功,希望有懂的朋友给段简单明了的代码,最好是能编译通过。我刚学图像处理,水平太菜,参考一下大家的思路。
...全文
190
3
打赏
收藏
求保存bmp位图的简单代码
我已经把位图读取出来,并且经过处理,要把感兴趣的部分保存为另一个位图,但是结果都是文件生成了,图像却是空的。我觉得应该是文件头没处理好,反复试了试也没成功,希望有懂的朋友给段简单明了的代码,最好是能编译通过。我刚学图像处理,水平太菜,参考一下大家的思路。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hisky1983
2006-04-06
打赏
举报
回复
BITMAPFILEHEADER bmfHdr;
LPBITMAPINFOHEADER lpBI;
DWORD dwDIBSize;
if (hDib == NULL)
{
return FALSE;
}
// 读取BITMAPINFO结构,并锁定
lpBI = (LPBITMAPINFOHEADER)
::GlobalLock((HGLOBAL) hDib);
if (lpBI == NULL)
{
return FALSE;
}
//判断是否是WIN3.0 DIB
if (!IS_WIN30_DIB(lpBI))
{
::GlobalUnlock((HGLOBAL) hDib);
return FALSE;
}
// 文件类型"BM"
bmfHdr.bfType ='MB';
// 文件头大小+颜色表大小
// (BITMAPINFOHEADER和BITMAPCOREHEADER结构的第一个DWORD都是该结构的大小)
dwDIBSize = *(LPDWORD)lpBI + cdib::PaletteSize((LPSTR)lpBI);
// 计算图像大小
if ((lpBI->biCompression == BI_RLE8) || (lpBI->biCompression == BI_RLE4))
{
// 对于RLE位图,没法计算大小,只能信任biSizeImage内的值
dwDIBSize += lpBI->biSizeImage;
}
else
{
DWORD dwBmBitsSize;
dwBmBitsSize = WIDTHBYTES((lpBI->biWidth)*((DWORD)lpBI->biBitCount)) * lpBI->biHeight;
// 计算出DIB真正的大小
dwDIBSize += dwBmBitsSize;
// 更新biSizeImage(很多BMP文件头中biSizeImage的值是错误的)
lpBI->biSizeImage = dwBmBitsSize;
}
// 计算文件大小:DIB大小+BITMAPFILEHEADER结构大小
bmfHdr.bfSize = dwDIBSize + sizeof(BITMAPFILEHEADER);
// 两个保留字
bmfHdr.bfReserved1 = 0;
bmfHdr.bfReserved2 = 0;
// 计算偏移量bfOffBits,它的大小为Bitmap文件头大小+DIB头大小+颜色表大小
bmfHdr.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) + lpBI->biSize + PaletteSize((LPSTR)lpBI);
CFile file;
建立文件file.create(....)
file.SetLength(bmfHdr.bfSize);
file.Write((LPSTR)&bmfHdr,sizeof(BITMAPFILEHEADER));
file.WriteHuge(lpBI,dwDIBSize);
wlwlxj
2006-04-06
打赏
举报
回复
下一个CDib类可以搞定
celiacw
2006-04-06
打赏
举报
回复
保存位文件时用Cfile类的一个对象如file,调用其成员函数file.write(参数省略,自己找),先写进文件头(BITMAPFILEHEADER),再写进数据部分,你看看是不是写数据部分出错了?
BMP
24
位图
转16位
位图
的程序 exe
24位
BMP
图片转565格式16位数组C文件代码,生成的代码用于嵌入式程序代码中图片文件显示,
BMP
图片以数组的形式
保存
并读取
BMP
和JPG互转C++源代码
BMP
和JPG互转源代码。全源代码,没使用Dll。用VC6.0编译通过。以前类似得软件基本上都通过
Bmp
VsJpg.dll来实现互转的。本代码全部使用公开的C++代码。需要得可以下载研究。
MFC对话框中点击按钮打开
bmp
图片并显示在picture中,同时可以另存
MFC对话框中点击按钮打开
bmp
图片并显示在picture中,同时可以另存
编程用ICON,
BMP
等图片资源压缩包
网友收集的各种图标,按钮图案,鼠标动画等资源,接近10M,包含面比较广,一般来说足够用了。
在MFC中实现显示摄像头画面并
保存
视频
在MFC中实现显示摄像头画面并
保存
视频 利用了opencv2.3.1
图形处理/算法
19,469
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章