如何保存带alpha通道的图片为bmp格式

KevinJHoo 2011-01-03 03:52:01
如题。
...全文
1739 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ga6840 2011-01-23
  • 打赏
  • 举报
回复
假设你有了 数据内存指针pData 而且是rgba 格式的 每个像素a存的是ALPHA值

std::ofstream lo_fout;
lo_fout.open("out.bmp", std::ios::out | std::ios::binary | std::ios::trunc);
//写入文件头部分
lo_fout.write((char*)(&m_bitHead), FHEADERSIZE);
lo_fout.write((char*)(&m_bitInfo), sizeof(BMPInfoHeader));
//写入位图rgba内容
twRGB lo_buff;
int lo_w = m_width * 4;
int lo_w_add = m_width % 4;//也就是m_width*(m_bitInfo.iBPP/8)%4
for(int lo_y = 0; lo_y < m_height ; lo_y++)
{
lo_fout.write((char*) pData[lo_y] , lo_w);
lo_fout.write((char*) &(lo_buff) , lo_w_add);
}
//关闭文件
lo_fout.close();

就存成文件了
wqhua 2011-01-23
  • 打赏
  • 举报
回复
申请一个24位的BMP,得到原图像数据内存指针pData后
用pData[i][j],pData[i][j+1],pData[i][j+2],pData[i][j+3]分别代表RGB和alpha吧
读的时候只要前面三个值就可以了

HuWenjin 2011-01-22
  • 打赏
  • 举报
回复
GDI+ 用10行左右的函数即可。

1)用Bitmap类,读出图形文件,文件被自动转成BITMAP位图格式
Bitmap* pBmpSrc = Bitmap::FromFile(L"youfile.png");

2)直接另存为
pBmpSrc.Save(L"newfile.bmp",encode,"image/bmp");

其中的encode获取在网上非常多,查一下就行了。
sunlin7 2011-01-22
  • 打赏
  • 举报
回复
CreateDIBSection(hdc, &bmpheader,0, *ppvBits...) ,其中BITMAPINFO参数要为设为32位。使用GDI+或者直接操作ppvBits,更改alpha通道,再保存位图到磁盘。使用支持alpha的软件(photoshop, gimp)查看bmp就可以看到了。
Evap 2011-01-22
  • 打赏
  • 举报
回复
好像除了使用COLORKEY以外没有什么好的方法了。。
renxu350 2011-01-22
  • 打赏
  • 举报
回复
按照#7楼说的做,
另外保存的BMP格式很重要,必须是 32位 A8R8G8B8 这样的格式,
既然你确定已经保存了ALPHA通道,那么就OK,
你可以在PHOTOSHOP软件中打开通道,确认一下A通道的存在的正确性
wwgddx 2011-01-04
  • 打赏
  • 举报
回复
你安装位图位图格式保存为32位位图文件时可以的,但你用GDI函数显示就有问题了,需要自己获取32位的数据,自己做一些处理才行,或者用GDI+或DX来显示也行。
hastings 2011-01-04
  • 打赏
  • 举报
回复
我想问一下,你指的“我自己保存后,确实带有通道,但通道里面的东东全是空的。”
这里的通道你是看哪部分的?就是怎么看的?
什么叫里面的东东全是空的?
位图只有32位的才勉强可以利用一下里面的那个8bit的rgbReserved字段~~
位图对alpha通道支持很弱的。
KevinJHoo 2011-01-04
  • 打赏
  • 举报
回复
这样子的,我必须是BMP格式,而且我取得的图片休息,是带有ALPHA通道的。我自己保存后,确实带有通道,但通道里面的东东全是空的。我用GDI,或GDI+试了,但我对图片操作不熟,也是网上找的几种方法,均不能成功。希望哪位高手指点下。谢谢了。比较急。保持关注。
renxu350 2011-01-03
  • 打赏
  • 举报
回复
关注中,,,,,
neohope 2011-01-03
  • 打赏
  • 举报
回复
呵呵,一般是这样的,对于jpg或bmp会指定某一种颜色为透明色,然后加载后自己运算
要透明的话,PNG,gif好一些

19,468

社区成员

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

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