我用CImage类打开一个bmp图像,该图像只有24位。
我想把该图像做成背景透明的图片,想把该图像转为32位,存为PNG格式!
谢谢!!!谢谢!!!
3 个解决方案
#1
用图像库吧,cximage或opencv什么的。转图很方便。
#2
问题已经解决! 谢谢:
1、先用一个CImage对象打开bmp文件;比如m_img;
2、 创建一个新的CImage 对象; CImage pngImg;
3、 pngImg.Create(m_img.GetWidth(),m_img.GetHeight(),32,CImage::createAlphaChannel);
4、 逐个像素复制:
最后直接保存为png文件pngImg.Save(文件名,Gdiplus::ImageFormatPNG);
1、先用一个CImage对象打开bmp文件;比如m_img;
2、 创建一个新的CImage 对象; CImage pngImg;
3、 pngImg.Create(m_img.GetWidth(),m_img.GetHeight(),32,CImage::createAlphaChannel);
4、 逐个像素复制:
int i;
int j;
for (i=0; i<m_img.GetWidth(); i++)
{
for (j=0; j<m_img.GetHeight(); j++)
{
byte *pByte = (byte *)m_img.GetPixelAddress(i, j);
byte *ppngByte=(byte*)pngImg.GetPixelAddress(i,j);
ppngByte[0]=pByte[0];
ppngByte[1]=pByte[1];
ppngByte[2]=pByte[2];
if (tmpImg->m_img.GetPixel(i,j)==RGB(255,255,255))
ppngByte[3]=0;
else
ppngByte[3]=255;
}
}
最后直接保存为png文件pngImg.Save(文件名,Gdiplus::ImageFormatPNG);
#3
我現在用MFC做一个CE画面,用24位深度的PNG图片显示很正常,但是用32位深度的PNG图片不显示,32位深度的PNG图片的显示该怎么做?
麻烦LZ
麻烦LZ
#1
用图像库吧,cximage或opencv什么的。转图很方便。
#2
问题已经解决! 谢谢:
1、先用一个CImage对象打开bmp文件;比如m_img;
2、 创建一个新的CImage 对象; CImage pngImg;
3、 pngImg.Create(m_img.GetWidth(),m_img.GetHeight(),32,CImage::createAlphaChannel);
4、 逐个像素复制:
最后直接保存为png文件pngImg.Save(文件名,Gdiplus::ImageFormatPNG);
1、先用一个CImage对象打开bmp文件;比如m_img;
2、 创建一个新的CImage 对象; CImage pngImg;
3、 pngImg.Create(m_img.GetWidth(),m_img.GetHeight(),32,CImage::createAlphaChannel);
4、 逐个像素复制:
int i;
int j;
for (i=0; i<m_img.GetWidth(); i++)
{
for (j=0; j<m_img.GetHeight(); j++)
{
byte *pByte = (byte *)m_img.GetPixelAddress(i, j);
byte *ppngByte=(byte*)pngImg.GetPixelAddress(i,j);
ppngByte[0]=pByte[0];
ppngByte[1]=pByte[1];
ppngByte[2]=pByte[2];
if (tmpImg->m_img.GetPixel(i,j)==RGB(255,255,255))
ppngByte[3]=0;
else
ppngByte[3]=255;
}
}
最后直接保存为png文件pngImg.Save(文件名,Gdiplus::ImageFormatPNG);
#3
我現在用MFC做一个CE画面,用24位深度的PNG图片显示很正常,但是用32位深度的PNG图片不显示,32位深度的PNG图片的显示该怎么做?
麻烦LZ
麻烦LZ