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

来源:互联网 发布:网络金庸群侠传单机版 编辑:程序博客网 时间:2024/06/06 02:23

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

*/
 




























原创粉丝点击