Convertir formatos de imágenes

Varios miembros del foro se han visto en la necesidad de tener que convertir imágenes a diferentes formatos y preguntan si es posible hacerlo directamente con Xailer y sin tener que recurrir a utilidades externas, DLLs, etc.

De estas peticiones nace esta librería que, sin necesidad de DLLs, nos permite hacerlo fácilmente.

En el siguiente ejemplo convertimos un bitmap en un jpeg:

METHOD Button1Click( oSender ) CLASS TForm1

   LOCAL hImage
   LOCAL cImage := "xailer.bmp"

   WITH OBJECT GDP():Create()
      hImage := :LoadImageFromFile( cImage )
      IF :SaveToJPEG( cImage, "c:tmptest.jpg", 30 )
          MsgInfo( "Ok" )
      ENDIF
      :DeleteImage( hImage )
      :Destroy()
   END

RETURN Nil

El método LoadImageFromFile() se encarga de leer la imagen y devuelve un manejador a dicha imagen. Los tipos de imagen soportados son: bitmap, jpeg, gif, tiff y png.

Cada vez que se llame a LoadImageFromFile() hay que llamar a DeleteImage() para liberar la memoria ocupada y devolverla al sistema operativo.

Para convertir entre los diferentes formatos soportados disponemos de los siguientes métodos:

SaveToGIF( cImagen, cDestino )
SaveToPNG( cImagen, cDestino )
SaveToTIFF( cImagen, cDestino )
SaveToJPEG( cImage, cDestino, nCalidad )

Los tres primeros reciben el nombre de la imagen origen y destino mientras que el método SaveToJPEG admite un parámetro más que especifica la calidad (porcentaje de compresión) que se va a aplicar a la imagen cuando se graba.

NOTA: El método SaveToGIF() aún no convierte correctamente algunos tipos de imágenes.

Esta es una versión temprana de la librería aunque algunos miembros del foro llevan tiempo probándola y poco a poco se irá mejorando conforme a vuestras necesidades.

Aquí está la librería: gdp.zip

Saludos,
José Lalín