ATL::CImage将数据信息转为带透明度的png图片

本文介绍如何使用C++将帧缓冲区的数据保存为PNG格式的图片,通过创建CImage对象并调用CreateEx方法初始化,然后进行位操作复制帧缓冲数据,最后保存为PNG文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//保存到磁盘上的png文件

int iWidth = m_FrameBuffer.m_iSizeX;
int iHight = m_FrameBuffer.m_iSizeY;

CImage Image;
//必须用这个CreatEx
Image.CreateEx(iWidth, -iHight, 32, BI_RGB, NULL, 0x000000FF);

byte* fromByte = m_FrameBuffer.m_pBits;

int nPitch = Image.GetPitch(), nBPP = Image.GetBPP();
LPBYTE lpBits = reinterpret_cast(Image.GetBits());

for (int yPos = 0; yPos < iHight; yPos++)
{
LPBYTE lpBytes = lpBits + (yPos * nPitch);
byte* toByte = lpBytes;
for (int xPos = 0; xPos < iWidth * 4; xPos++)
{
toByte[xPos] = fromByte[yPos *iWidth * 4 + xPos];
}
}

Image.Save(_T(“C:\Users\17691\Desktop\2.png”), ImageFormatPNG);
Image.Detach();

https://docs.microsoft.com/zh-cn/cpp/atl-mfc-shared/reference/cimage-class?view=vs-2019#createex

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值