C++-VC如何将bmp格式转换成png
VC中如何将bmp格式的图片转换成png?有没有专门的API? 或者说使用GDI+的库?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
VC中如何将bmp格式的图片转换成png?有没有专门的API? 或者说使用GDI+的库?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
使用C或者C++的话可以有多种方式,这里简单列举下思路,仅供参考。
方法一:使用CDXGraph类
代码如下:
IStream* CDXGraph::StretchPic(const WCHAR *path, const WCHAR *format, int width, int heigh)
{
Bitmap orgpic(path) ;
Image *Despic = orgpic.GetThumbnailImage(width,heigh) ;
IStream* pstm = NULL;
CLSID encoderClsid ;
GetEncoderClsid(format,&encoderClsid) ;
CString name;
name = "Debug\1.bmp";
Status sta =Despic->Save(name.AllocSysString(),&encoderClsid,0) ; //Despic->Save(pstm, &encoderClsid,0);
if (sta == Ok)
{
return pstm ;
}
return NULL ;
}
int CDXGraph::GetEncoderClsid(const WCHAR *format, CLSID *pClsid)
{
UINT num = 0; // number of image encoders
UINT size = 0; // size of the image encoder array in bytes
ImageCodecInfo* pImageCodecInfo = NULL;
GetImageEncodersSize(&num, &size);
if(size == 0)
return -1; // Failure
pImageCodecInfo = (ImageCodecInfo*)(malloc(size));
if(pImageCodecInfo == NULL)
return -1; // Failure
GetImageEncoders(num, size, pImageCodecInfo);
for(UINT j = 0; j < num; ++j)
{
if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 )
{
*pClsid = pImageCodecInfo[j].Clsid;
free(pImageCodecInfo);
return j; // Success
}
}
free(pImageCodecInfo);
return -1;
}
方法二:使用CxImage图像处理类库
这个类库功能十分强大,具体可以在网上搜索一下教程(比如这篇),基本思路就是加载进图片Load 、保存Save为CXIMAGE_FORMAT_PNG即可。
方法三:使用MFC中的CImage
#include "atlimage.h"
.....
CImage image;
image.Load(_T("D:\1.bmp"));
image.Save(_T("D:\1.png"));