Sfumare radialmente un'immagine mediante le funzioni esterne del API di ImageMagick
Vai alla navigazione
Vai alla ricerca
Il sistema ImageMagick consente di creare, modificare e convertire immagini bitmap. Può altresì leggere e scrivere immagini di oltre 200 formati.
Per poter fruire in Gambas delle risorse, è necessario avere installata nel sistema e richiamare la seguente libreria condivisa: "libMagickWand-7.Q16HDRI.so.10.0.2 ".
Le risorse di questa libreria ci consentono - fra l'altro - di sfumare un'immagine con un effetto vortice.
Mostriamo un esempio pratico:
Library "libMagickWand-7.Q16HDRI:10.0.2"
Private Const MagickPathExtent As Integer = 4096
Public Struct MagickWand
id As Long
name[MagickPathExtent] As Byte
images As Pointer
image_info As Pointer
exception As Pointer
insert_before As Integer
image_pending As Integer
debug_ As Integer
signature As Long
End Struct
Private Enum MagickFalse = 0, MagickTrue
' 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 MagickWand
' MagickBooleanType MagickReadImage(MagickWand *wand,const char *filename)
' Reads an image or image sequence.
Private Extern MagickReadImage(wand As MagickWand, filename As String) As Integer
' MagickBooleanType MagickRadialBlurImage(MagickWand *wand, const double angle)
' Blurs an image.
Private Extern MagickRadialBlurImage(wand As MagickWand, blur As Float) As Integer
' MagickBooleanType MagickWriteImages(MagickWand *wand, const char *filename,const MagickBooleanType adjoin)
' Writes an image or image sequence.
Private Extern MagickWriteImages(wand As MagickWand, filename As String, adjoin As Boolean) As Integer
' MagickWand *DestroyMagickWand(MagickWand *wand)
' Deallocates memory associated with an MagickWand.
Private Extern DestroyMagickWand(wand As MagickWand) As MagickWand
' void MagickWandTerminus(void)
' Terminates the MagickWand environment.
Private Extern MagickWandTerminus()
Public Sub Main()
Dim bo As Integer
Dim mwand As MagickWand
Dim fileimmagine, nuovofile As String
fileimmagine = "/percorso/del/file/immagine"
nuovofile = "/percorso/del/nuovo/file/dell'immagine/spostata"
MagickWandGenesis()
mwand = NewMagickWand()
bo = MagickReadImage(mwand, fileimmagine)
If bo == MagickFalse Then
Termina(mwand)
Error.Raise("Impossibile caricare l'immagine !")
Endif
' Modifica l'immagine con l'effetto sfumato con vortice:
MagickRadialBlurImage(mwand, 50.0)
bo = MagickWriteImages(mwand, nuovofile, MagickTrue)
If bo == MagickFalse Then
Termina(mwand)
Error.Raise("Impossibile creare il nuovo file dell'immagine sfumata !")
Endif
Termina(mwand)
End
Private Procedure Termina(mw As MagickWand) ' Libera la memoria e termina il programma
DestroyMagickWand(mw)
Wait 0.01
MagickWandTerminus()
End