Differenze tra le versioni di "Sfumare radialmente 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.6.0.0'' ".
+
Per poter fruire in Gambas delle risorse, è necessario avere installata nel sistema e richiamare la seguente libreria condivisa: "''libMagickWand-7.Q16HDRI.so.10.0.1'' ".
  
 
Le risorse di questa libreria ci consentono - fra l'altro - di sfumare un'immagine con un effetto vortice.
 
Le risorse di questa libreria ci consentono - fra l'altro - di sfumare un'immagine con un effetto vortice.
  
 
Mostriamo un esempio pratico:
 
Mostriamo un esempio pratico:
  Library "libMagickWand-6.Q16:6.0.0"
+
  Library "libMagickWand-7.Q16HDRI:10.0.1"
 
   
 
   
 
  Private Const MagickPathExtent As Integer = 4096
 
  Private Const MagickPathExtent As Integer = 4096
Riga 53: Riga 53:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim bo As Integer
 
   Dim bo As Integer
Riga 59: Riga 59:
 
   Dim fileimmagine, nuovofile As String
 
   Dim fileimmagine, nuovofile As String
 
   
 
   
   fileimmagine = "<FONT Color=gray>''/percorso/del/file/immagine''</font>"
+
   fileimmagine = "<FONT Color=darkgreen>''/percorso/del/file/immagine''</font>"
   nuovofile = "<FONT Color=gray>''/percorso/del/nuovo/file/dell'immagine/spostata''</font>"
+
   nuovofile = "<FONT Color=darkgreen>''/percorso/del/nuovo/file/dell'immagine/spostata''</font>"
 
    
 
    
 
   MagickWandGenesis()
 
   MagickWandGenesis()
Riga 83: Riga 83:
 
   Termina(mwand)
 
   Termina(mwand)
 
    
 
    
  '''End'''
+
  End
 
   
 
   
  '''Private''' Procedure Termina(mw As MagickWand)    <FONT Color=gray>' ''Libera la memoria e termina il programma''</font>
+
   
 +
Private Procedure Termina(mw As MagickWand)    <FONT Color=gray>' ''Libera la memoria e termina il programma''</font>
 
    
 
    
 
   DestroyMagickWand(mw)
 
   DestroyMagickWand(mw)
Riga 91: Riga 92:
 
   MagickWandTerminus()
 
   MagickWandTerminus()
 
    
 
    
  '''End'''
+
  End
  
  

Versione attuale delle 04:09, 6 giu 2024

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.1 ".

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.1"

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


Riferimenti