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 dinamica condivisa: "''libfreeimage-3.15.4.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'':
  Library "libfreeimage-3.15.4"
+
  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,
 
  Private Enum FIF_UNKNOWN = -1, FIF_BMP, FIF_ICO, FIF_JPEG, FIF_JNG, FIF_KOALA, FIF_LBM, FIF_IFF = 5, FIF_MNG = 6,
Riga 64: Riga 64:
 
    
 
    
 
  '''End'''
 
  '''End'''
 
  
  

Versione attuale delle 08:19, 10 mar 2022

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 deinizializza la libreria "FreeImage":
  FreeImage_Unload(fbm)
  FreeImage_DeInitialise()
  
End


Riferimenti