Differenze tra le versioni di "Convertire un'immagine da un formato ad un altro mediante le funzioni esterne del API di FreeImage"

Da Gambas-it.org - Wikipedia.
 
Riga 3: Riga 3:
 
La libreria ''FreeImage'' consente anche di convertire numerosi formati immagine in altri formati.
 
La libreria ''FreeImage'' consente anche di convertire numerosi formati immagine in altri formati.
  
Per poter fruire in Gambas delle risorse di ''FreeImage'', è necessario avere installata nel sistema e richiamare la libreria condivisa: "''libfreeimage-3.18.0.so'' "
+
Per poter fruire in Gambas delle risorse di ''FreeImage'', è necessario avere installata nel sistema e richiamare la libreria condivisa: "''libfreeimage-3.18.0.so'' ".
 
 
  
 
Mostriamo un semplice ed essenziale esempio pratico, nel quale si convertirà un file immagine dal formato ''jpg'' nel formato ''tiff'':
 
Mostriamo un semplice ed essenziale esempio pratico, nel quale si convertirà un file immagine dal formato ''jpg'' nel formato ''tiff'':
Riga 42: Riga 41:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
  Dim cp As String
+
  Dim cp As String
  Dim fbm As Pointer
+
  Dim fbm As Pointer
  Dim bo As Boolean
+
  Dim bo As Boolean
 
+
  <FONT Color=gray>' ''Inizializza la libreria "FreeImage":''</font>
+
  <FONT Color=darkgreen>' ''Inizializza la libreria "FreeImage":''</font>
 
   FreeImage_Initialise(False)
 
   FreeImage_Initialise(False)
 
    
 
    
Riga 59: Riga 58:
 
   If bo = False Then Error.Raise("Impossibile salvare l'immagine !")
 
   If bo = False Then Error.Raise("Impossibile salvare l'immagine !")
 
    
 
    
  <FONT Color=gray>' ''Libera la memoria precedentemente allocata e deinizializza la libreria "FreeImage":''</font>
+
  <FONT Color=gray>' ''Libera la memoria precedentemente allocata e de-inizializza la libreria "FreeImage":''</font>
 
   FreeImage_Unload(fbm)
 
   FreeImage_Unload(fbm)
 
   FreeImage_DeInitialise()
 
   FreeImage_DeInitialise()
 
    
 
    
  '''End'''
+
  End
  
  

Versione attuale delle 14:42, 3 lug 2024

FreeImage è una libreria open source per gli sviluppatori che desiderano gestire immagini grafiche di formato PNG, BMP, JPEG, TIFF e altri come richiesti dalle odierne applicazioni multimediali.

La libreria FreeImage consente anche di convertire numerosi formati immagine in altri formati.

Per poter fruire in Gambas delle risorse di FreeImage, è necessario avere installata nel sistema e richiamare la libreria condivisa: "libfreeimage-3.18.0.so ".

Mostriamo un semplice ed essenziale esempio pratico, nel quale si convertirà un file immagine dal formato jpg nel formato tiff:

Library "libfreeimage-3.18.0"

Private Enum FIF_UNKNOWN = -1, FIF_BMP, FIF_ICO, FIF_JPEG, FIF_JNG, FIF_KOALA, FIF_LBM, FIF_IFF = 5, FIF_MNG = 6,
             FIF_PBM, FIF_PBMRAW, FIF_PCD, FIF_PCX, FIF_PGM, FIF_PGMRAW, FIF_PNG, FIF_PPM, FIF_PPMRAW, FIF_RAS,
             FIF_TARGA, FIF_TIFF, FIF_WBMP, FIF_PSD, FIF_CUT, FIF_XBM, FIF_XPM, FIF_DDS, FIF_GIF, FIF_HDR, FIF_FAXG3,
             FIF_SGI, FIF_EXR, FIF_J2K, FIF_JP2, FIF_PFM, FIF_PICT, FIF_RAW

Private Const JPEG_DEFAULT As Integer = 0
Private Const TIFF_DEFAULT As Integer = 0

' void FreeImage_Initialise(BOOL FI_DEFAULT(FALSE))
' Initialises the library.
Private Extern FreeImage_Initialise(fi_default As Boolean)

' const char * FreeImage_GetCopyrightMessage(void)
' Returns a string containing a standard copyright message.
Private Extern FreeImage_GetCopyrightMessage() As String

' FIBITMAP * FreeImage_Load(FREE_IMAGE_FORMAT fif, const char *filename, int flags FI_DEFAULT(0))
' Load routines. Decodes a bitmap, allocates memory for it and then returns it as a FIBITMAP.
Private Extern FreeImage_Load(fif As Integer, filename As String, flags As Integer) As Pointer

' BOOL FreeImage_Save(FREE_IMAGE_FORMAT fif, FIBITMAP *dib, const char *filename, int flags FI_DEFAULT(0))
' Saves a previously loaded FIBITMAP to a file.
Private Extern FreeImage_Save(fif As Integer, dib As Pointer, filename As String, flags As Integer) As Boolean

' void FreeImage_Unload(FIBITMAP *dib)
' Unload routines.
Private Extern FreeImage_Unload(dib As Pointer)

' void FreeImage_DeInitialise(void)
' Deinitialises the library.
Private Extern FreeImage_DeInitialise()


Public Sub Main()
 
  Dim cp As String
  Dim fbm As Pointer
  Dim bo As Boolean

' Inizializza la libreria "FreeImage":
  FreeImage_Initialise(False)
  
  cp = FreeImage_GetCopyrightMessage()
  Print cp
  
  fbm = FreeImage_Load(FIF_JPEG, "/percorso/del/file/immagine.jpg", JPEG_DEFAULT)
  
  bo = FreeImage_Save(FIF_TIFF, fbm, "/percorso/del/nuovo/file/immagine.tif", TIFF_DEFAULT)
  If bo = False Then Error.Raise("Impossibile salvare l'immagine !")
  
' Libera la memoria precedentemente allocata e de-inizializza la libreria "FreeImage":
  FreeImage_Unload(fbm)
  FreeImage_DeInitialise()
  
End


Riferimenti