The GDI+

Thursday Sep 20th 2001 by Leandro Gustavo Biss Becker

The Microsoft GDI+ can do many cool things for you. One of these things is the ability to load or save images of a number of different types.

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:


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

Mobile Site | Full Site
Copyright 2017 © QuinStreet Inc. All Rights Reserved