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

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


#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

*/
 




























  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值