您的位置:首页 > 其它

VC6.0中gdiPlus的使用以及一个bmp转jpg的小例子

2013-01-07 17:01 197 查看


VC6.0中gdiPlus的使用以及一个bmp转jpg的小例子

http://mingarlic.blog.163.com/blog/static/31148911200710261318324/

#include <GdiPlus.h>

using namespace Gdiplus;

GdiplusStartupInput m_gdiplusStartupInput;

ULONG_PTR m_gdiplusToken;

int GetEncoderClsid(const WCHAR* format, CLSID* pClsid);

void BMP2JPG(CString strBMPFile,CString strJPGFile);

GdiplusStartup(&m_gdiplusToken, &m_gdiplusStartupInput, NULL);

BMP2JPG("...","...");

GdiplusShutdown(m_gdiplusToken);

int 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; // Failure

}

void BMP2JPG(CString strBMPFile,CString strJPGFile)

{

CLSID encoderClsid;

WCHAR strGuid[39];

if(GetEncoderClsid(L"image/jpeg", &encoderClsid) >= 0)

StringFromGUID2(encoderClsid, strGuid, 39);

Image image(strBMPFile.AllocSysString());

image.Save(strJPGFile.AllocSysString(),&encoderClsid,NULL);

}

/*

//在GDI+中,需要定义一个ULONG_PTR。

#ifndef ULONG_PTR

#define ULONG_PTR unsigned long*

#endif

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐