C++-VC如何将bmp格式转换成png

发布于 2017-02-14 19:36:17 字数 51 浏览 1179 评论 1

VC中如何将bmp格式的图片转换成png?有没有专门的API? 或者说使用GDI+的库?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清晨说ぺ晚安 2017-07-16 16:11:06

使用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"));

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文