Bueno, quise darle una sorpresa y me instalé la libreria libMagickWand-6.Q16 .
Usando la libreria "libMagickWand-6.Q16.so.2.0.0" de ImageMagick. podeis ver al siguiente simple codigo para crear un thumbnail de una imagen.
Library "libMagickWand-6.Q16:2.0.0" ' Pero podeis usar tambien la libreria "libMagickWand:5.0.0" !!!
Private Enum MagickFalse = 0, MagickTrue
Private Enum UndefinedFilter = 0, PointFilter, BoxFilter, TriangleFilter, HermiteFilter,
HanningFilter, HammingFilter, BlackmanFilter, GaussianFilter, QuadraticFilter,
CubicFilter, CatromFilter, MitchellFilter, JincFilter, SincFilter, SincFastFilter,
KaiserFilter, WelshFilter, ParzenFilter, BohmanFilter, BartlettFilter, LagrangeFilter,
LanczosFilter, LanczosSharpFilter, Lanczos2Filter, Lanczos2SharpFilter, RobidouxFilter,
RobidouxSharpFilter, CosineFilter, SplineFilter, LanczosRadiusFilter, SentinelFilter
' void MagickWandGenesis(void)
' Initializes the MagickWand environment.
Private Extern MagickWandGenesis()
' MagickWand *NewMagickWand(void)
' Returns a wand required for all other methods in the API.
Private Extern NewMagickWand() As Pointer
' MagickBooleanType MagickReadImage(MagickWand *wand,const char *filename)
' Reads an image or image sequence.
Private Extern MagickReadImage(wand As Pointer, filename As String) As Boolean
' MagickBooleanType MagickResizeImage(MagickWand *wand, const size_t columns,const size_t rows,const FilterType filter)
' Scales an image to the desired dimensions with a filter.
Private Extern MagickResizeImage(wand As Pointer, columns As Long, rows As Long, filter As Integer, blur As Float) As Boolean
' MagickBooleanType MagickWriteImages(MagickWand *wand, const char *filename,const MagickBooleanType adjoin)
' Writes an image or image sequence.
Private Extern MagickWriteImages(wand As Pointer, filename As String, adjoin As Boolean) As Boolean
' MagickWand *DestroyMagickWand(MagickWand *wand)
' Deallocates memory associated with an MagickWand.
Private Extern DestroyMagickWand(wand As Pointer) As Pointer
' void MagickWandTerminus(void)
' Terminates the MagickWand environment.
Private Extern MagickWandTerminus()
Public Sub Main()
Dim bo As Boolean
Dim magick_wand As Pointer
Dim fileimagen, nuevofile As String
fileimagen = "/ruta/de/la/imagen"
nuevofile = "/ruta/del/nuevo/archivo/imagen/thumbnail"
MagickWandGenesis()
magick_wand = NewMagickWand()
bo = MagickReadImage(magick_wand, fileimagen)
If bo = MagickFalse Then
MagickWandTerminus()
Error.Raise("Impossible cargar imagen !")
Endif
MagickResizeImage(magick_wand, 106, 80, LanczosFilter, 1.0)
bo = MagickWriteImages(magick_wand, nuevofile, MagickTrue)
If bo = MagickFalse Then
MagickWandTerminus()
Error.Raise("Impossible crear el nuovo archivo imagen !")
Endif
DestroyMagickWand(magick_wand)
Wait 0.01
MagickWandTerminus()
End
Private Enum MagickFalse = 0, MagickTrue
Private Enum UndefinedFilter = 0, PointFilter, BoxFilter, TriangleFilter, HermiteFilter,
HanningFilter, HammingFilter, BlackmanFilter, GaussianFilter, QuadraticFilter,
CubicFilter, CatromFilter, MitchellFilter, JincFilter, SincFilter, SincFastFilter,
KaiserFilter, WelshFilter, ParzenFilter, BohmanFilter, BartlettFilter, LagrangeFilter,
LanczosFilter, LanczosSharpFilter, Lanczos2Filter, Lanczos2SharpFilter, RobidouxFilter,
RobidouxSharpFilter, CosineFilter, SplineFilter, LanczosRadiusFilter, SentinelFilter
' void MagickWandGenesis(void)
' Initializes the MagickWand environment.
Private Extern MagickWandGenesis()
' MagickWand *NewMagickWand(void)
' Returns a wand required for all other methods in the API.
Private Extern NewMagickWand() As Pointer
' MagickBooleanType MagickReadImage(MagickWand *wand,const char *filename)
' Reads an image or image sequence.
Private Extern MagickReadImage(wand As Pointer, filename As String) As Boolean
' MagickBooleanType MagickResizeImage(MagickWand *wand, const size_t columns,const size_t rows,const FilterType filter)
' Scales an image to the desired dimensions with a filter.
Private Extern MagickResizeImage(wand As Pointer, columns As Long, rows As Long, filter As Integer, blur As Float) As Boolean
' MagickBooleanType MagickWriteImages(MagickWand *wand, const char *filename,const MagickBooleanType adjoin)
' Writes an image or image sequence.
Private Extern MagickWriteImages(wand As Pointer, filename As String, adjoin As Boolean) As Boolean
' MagickWand *DestroyMagickWand(MagickWand *wand)
' Deallocates memory associated with an MagickWand.
Private Extern DestroyMagickWand(wand As Pointer) As Pointer
' void MagickWandTerminus(void)
' Terminates the MagickWand environment.
Private Extern MagickWandTerminus()
Public Sub Main()
Dim bo As Boolean
Dim magick_wand As Pointer
Dim fileimagen, nuevofile As String
fileimagen = "/ruta/de/la/imagen"
nuevofile = "/ruta/del/nuevo/archivo/imagen/thumbnail"
MagickWandGenesis()
magick_wand = NewMagickWand()
bo = MagickReadImage(magick_wand, fileimagen)
If bo = MagickFalse Then
MagickWandTerminus()
Error.Raise("Impossible cargar imagen !")
Endif
MagickResizeImage(magick_wand, 106, 80, LanczosFilter, 1.0)
bo = MagickWriteImages(magick_wand, nuevofile, MagickTrue)
If bo = MagickFalse Then
MagickWandTerminus()
Error.Raise("Impossible crear el nuovo archivo imagen !")
Endif
DestroyMagickWand(magick_wand)
Wait 0.01
MagickWandTerminus()
End
Referencias:
http://imagemagick.org/api/magick-wand.php
http://www.ummon.org/Linux/index/ImageMagick_R.html
saludos