Differenze tra le versioni di "Spostare il contenuto all'interno di un'immagine mediante le funzioni esterne del API di ImageMagick"
Da Gambas-it.org - Wikipedia.
Riga 1: | Riga 1: | ||
Il sistema ''ImageMagick'' consente di creare, modificare e convertire immagini bitmap. Può altresì leggere e scrivere immagini di oltre 200 formati. | 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-6.Q16.so. | + | Per poter fruire in Gambas delle risorse, è necessario avere installata nel sistema e richiamare la seguente libreria condivisa: "''libMagickWand-6.Q16.so.6.0.0'' ". |
Riga 9: | Riga 9: | ||
[ A] | [ A] | ||
Mostriamo un esempio pratico: | Mostriamo un esempio pratico: | ||
− | Library "libMagickWand-6.Q16: | + | Library "libMagickWand-6.Q16:6.0.0" |
Private Enum MagickFalse = 0, MagickTrue | Private Enum MagickFalse = 0, MagickTrue | ||
Riga 44: | Riga 44: | ||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
− | + | Dim bo As Boolean | |
− | + | Dim magickwand As Pointer | |
− | + | Dim fileimmagine, nuovofile As String | |
− | + | ||
fileimmagine = "<FONT Color=gray>''/percorso/del/file/immagine''</font>" | fileimmagine = "<FONT Color=gray>''/percorso/del/file/immagine''</font>" | ||
nuovofile = "<FONT Color=gray>''/percorso/del/nuovo/file/dell'immagine/spostata''</font>" | nuovofile = "<FONT Color=gray>''/percorso/del/nuovo/file/dell'immagine/spostata''</font>" | ||
Riga 74: | Riga 74: | ||
'''End''' | '''End''' | ||
− | |||
'''Private''' Procedure Termina(mw As Pointer) <FONT Color=gray>' ''Libera la memoria e termina il programma''</font> | '''Private''' Procedure Termina(mw As Pointer) <FONT Color=gray>' ''Libera la memoria e termina il programma''</font> | ||
Riga 82: | Riga 81: | ||
'''End''' | '''End''' | ||
− | |||
Versione delle 18:01, 22 feb 2022
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-6.Q16.so.6.0.0 ".
Le risorse di questa libreria ci consentono - fra l'altro - di spostare il contenuto all'interno di un'immagine lungo uno o entrambi gli assi di spostamento x, y. Così, se l'immagine presenta, come disegno al suo interno, la lettera "A":
[ A ]
essa potrà essere spostata all'interno del campo dell'immagine medesima lungo il suo asse di spostamento x, ad esempio, così:
[ A]
Mostriamo un esempio pratico:
Library "libMagickWand-6.Q16:6.0.0" 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 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 MagickRollImage(MagickWand *wand,const ssize_t x, const size_t y) ' Offsets an image as defined by x_offset and y_offset. Private Extern MagickRollImage(wand As Pointer, x As Long, y As Long) 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 magickwand As Pointer Dim fileimmagine, nuovofile As String fileimmagine = "/percorso/del/file/immagine" nuovofile = "/percorso/del/nuovo/file/dell'immagine/spostata" MagickWandGenesis() magickwand = NewMagickWand() bo = MagickReadImage(magickwand, fileimmagine) If bo = MagickFalse Then Termina(magickwand, pw) Error.Raise("Impossibile caricare l'immagine !") Endif ' Sposta tutto il disegno all'interno dell'immagine lungo il solo asse di spostamento x: MagickRollImage(magickwand, 120, 0) bo = MagickWriteImages(magickwand, nuovofile, MagickTrue) If bo = MagickFalse Then Termina(magickwand, pw) Error.Raise("Impossibile creare il nuovo file dell'immagine spostata !") Endif Termina(magickwand, pw) End Private Procedure Termina(mw As Pointer) ' Libera la memoria e termina il programma DestroyMagickWand(mw) Wait 0.01 MagickWandTerminus() End