2006-04-06

_Gdiplus.vcx and SavetoFile

Do you see something wrong in the code below ?


local lcSource, lcDest
lcSource = getpict()
lcDest = justpath(lcSource) + "\_" + juststem(lcSource)

local loImage as gpImage of home() + ffc/_gdiplus.vcx
loImage = newobject("gpImage",home()+"ffc/_gdiplus.vcx")
loImage.CreateFromFile(lcSource)
loImage.SavetoFile(lcdest + ".png","image/png")



That's a very simple code, that is supposed to load an image and save it as a png. But nothing happens ! Can you guess why ???


The Savetofile method from gpimage class from _gdiplus.vcx must receive as a required second parameter, the "tvclsidencoder", that can be the clsid of the encoder to use, or a MIME type, eg "image/jpeg" or "image/png". If a MIME type is specified, then the method dynamically looks up the clsid of the appropriate encoder.


99% of us pass the mime type, because that's easier to remember, but be careful ! Because that parameter mime type, is CASE SENSITIVE!

You have always to pass this parameter in lowercase !
The code above did not work because i typed "image/png" instead of "image/png".

By the way, the MIME (multipurpose internet mail extensions) types of the encoders built into microsoft windows GDI+ are as follows:


  • image/bmp 
  • image/jpeg
  • image/gif
  • image/tiff
  • image/png