User ID:
Password:
Remember Me:
Forgot Password?
Not a member?
Click here for more information and to register.

    The GDI+



    Environment: [VC6 SP4, NT4 SP3, W2k, Win 9x]

    I have found that the Microsft GDI+ can do many cool things for you. Previously you had to find code or write your own code to do the same things. One of these things is the ability to load or save the following types of images:

    • BMP
    • DIB
    • RLE
    • GIF
    • JPEG
    • EMF
    • TIFF
    • PNG

    These can be loaded with just a few lines of code like this:

    #include <Gdiplus.h>
    using namespace Gdiplus;
    #pragma comment(lib, "gdiplus.lib")
    
    Image Im(L"c:\\fig.jpg", FALSE);
    CLSID GifCodec;
    GetCodecClsid(L"image/gif", &GifCodec);
    Im.Save(L"c:\\fig.gif", &GifCodec, NULL);

    Here is the code to GetCodecClsid

    int GetCodecClsid(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;
           return j; // Success
         }
      } // for
    
      return -1; // Failure
    } // GetCodecClsid

    All help about GDI+ can be found at: http://msdn.microsoft.com/library/default.asp

    Downloads

    Here is the library, headers and the dll to build the samples gdiplus.zip (900K):


    IT Offers


    Top Authors