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.
 
(4 versioni intermedie di uno stesso utente non sono mostrate)
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 13: Riga 13:
 
               FIF_TARGA, FIF_TIFF, FIF_WBMP, FIF_PSD, FIF_CUT, FIF_XBM, FIF_XPM, FIF_DDS, FIF_GIF, FIF_HDR, FIF_FAXG3,
 
               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
 
               FIF_SGI, FIF_EXR, FIF_J2K, FIF_JP2, FIF_PFM, FIF_PICT, FIF_RAW
 +
 
  Private Const JPEG_DEFAULT As Integer = 0
 
  Private Const JPEG_DEFAULT As Integer = 0
 +
Private Const TIFF_DEFAULT As Integer = 0
 
   
 
   
  <FONT Color=gray>' ''void FreeImage_Initialise(BOOL FI_DEFAULT(FALSE))''</font>
+
  <FONT Color=gray>' ''void FreeImage_Initialise(BOOL FI_DEFAULT(FALSE))''
 +
' ''Initialises the library.''</font>
 
  Private Extern FreeImage_Initialise(fi_default As Boolean)
 
  Private Extern FreeImage_Initialise(fi_default As Boolean)
 
   
 
   
  <FONT Color=gray>' ''FIBITMAP * FreeImage_Load(FREE_IMAGE_FORMAT fif, const char *filename, int flags FI_DEFAULT(0))''</font>
+
<FONT Color=gray>' ''const char * FreeImage_GetCopyrightMessage(void)''
 +
' ''Returns a string containing a standard copyright message.''</font>
 +
Private Extern FreeImage_GetCopyrightMessage() As String
 +
 +
  <FONT Color=gray>' ''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.''</font>
 
  Private Extern FreeImage_Load(fif As Integer, filename As String, flags As Integer) As Pointer
 
  Private Extern FreeImage_Load(fif As Integer, filename As String, flags As Integer) As Pointer
 
   
 
   
  <FONT Color=gray>' ''BOOL FreeImage_Save(FREE_IMAGE_FORMAT fif, FIBITMAP *dib, const char *filename, int flags FI_DEFAULT(0))''</font>
+
  <FONT Color=gray>' ''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.''</font>
 
  Private Extern FreeImage_Save(fif As Integer, dib As Pointer, filename As String, flags As Integer) As Boolean
 
  Private Extern FreeImage_Save(fif As Integer, dib As Pointer, filename As String, flags As Integer) As Boolean
 
   
 
   
  <FONT Color=gray>' ''void FreeImage_Unload(FIBITMAP *dib)''</font>
+
  <FONT Color=gray>' ''void FreeImage_Unload(FIBITMAP *dib)''
 +
' ''Unload routines.''</font>
 
  Private Extern FreeImage_Unload(dib As Pointer)
 
  Private Extern FreeImage_Unload(dib As Pointer)
 
   
 
   
  <FONT Color=gray>' ''void FreeImage_DeInitialise(void)''</font>
+
  <FONT Color=gray>' ''void FreeImage_DeInitialise(void)''
 +
' ''Deinitialises the library.''</font>
 
  Private Extern FreeImage_DeInitialise()
 
  Private Extern FreeImage_DeInitialise()
 
   
 
   
Riga 45: Riga 56:
 
   fbm = FreeImage_Load(FIF_JPEG, "<FONT Color=gray>''/percorso/del/file/immagine.jpg''</font>", JPEG_DEFAULT)
 
   fbm = FreeImage_Load(FIF_JPEG, "<FONT Color=gray>''/percorso/del/file/immagine.jpg''</font>", JPEG_DEFAULT)
 
    
 
    
   bo = FreeImage_Save(FIF_TIFF, fbm, "<FONT Color=gray>''/percorso/del/nuovo/file/immagine.tif''</font>", 0)
+
   bo = FreeImage_Save(FIF_TIFF, fbm, "<FONT Color=gray>''/percorso/del/nuovo/file/immagine.tif''</font>", TIFF_DEFAULT)
 
   If bo = False Then Error.Raise("Impossibile salvare l'immagine !")
 
   If bo = False Then Error.Raise("Impossibile salvare l'immagine !")
 
    
 
    
Riga 58: Riga 69:
 
=Riferimenti=
 
=Riferimenti=
 
* http://freeimage.sourceforge.net
 
* http://freeimage.sourceforge.net
 +
* http://downloads.sourceforge.net/freeimage/FreeImage3160.pdf
 +
* http://diyhpl.us/~bryan/irc/darpa/avm/meta/meta/QRG/code-library/lisp/freeimage/docs/FreeImage390.pdf

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