Differenze tra le versioni di "Convertire un file immagine in un file immagine di tipo GIF con le funzioni esterne del API di LibFreeImage"

Da Gambas-it.org - Wikipedia.
Riga 13: Riga 13:
 
               FIF_PPMRAW, FIF_RAS, FIF_TARGA, FIF_TIFF, FIF_WBMP, FIF_PSD, FIF_CUT, FIF_XBM, FIF_XPM,
 
               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
 
               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 GIF_DEFAULT As Integer = 0
 
  Private Enum FIQ_WUQUANT = 0, FIQ_NNQUANT
 
  Private Enum FIQ_WUQUANT = 0, FIQ_NNQUANT
 
   
 
   
Riga 56: Riga 58:
 
   Print cp
 
   Print cp
 
   
 
   
   im = FreeImage_Load(FIF_JPEG, "<FONT Color=gray>''/percorso/del/file/immagine/da/convertire.jpg''</font>", 0)
+
   im = FreeImage_Load(FIF_JPEG, "<FONT Color=gray>''/percorso/del/file/immagine/da/convertire.jpg''</font>", JPEG_DEFAULT)
 
   If im = 0 Then Error.Raise("Impossibile caricare l'immagine !")
 
   If im = 0 Then Error.Raise("Impossibile caricare l'immagine !")
 
    
 
    
Riga 63: Riga 65:
 
   If im = 0 Then Error.Raise("Errore alla funzione 'FreeImage_ColorQuantize' !")
 
   If im = 0 Then Error.Raise("Errore alla funzione 'FreeImage_ColorQuantize' !")
 
      
 
      
   bo = FreeImage_Save(FIF_GIF, im, "<FONT Color=gray>''/percorso/del/file.gif''</font>", 0)
+
   bo = FreeImage_Save(FIF_GIF, im, "<FONT Color=gray>''/percorso/del/file.gif''</font>", GIF_DEFAULT)
 
   If bo = False Then Error.Raise("Impossibile salvare il nuovo file immagine GIF !")
 
   If bo = False Then Error.Raise("Impossibile salvare il nuovo file immagine GIF !")
 
    
 
    

Versione delle 11:40, 1 giu 2017

FreeImage è un progetto di libreria open source per gli sviluppatori che desiderano supportare i più diffusi formati di immagine grafica come PNG, BMP, JPEG, TIFF e altri necessari per le applicazioni multimediali.

Per fruire in Gambas delle risorse della libreria FreeImage, è necessario installare e richiamare la libreria dinamica e condivisa: "libfreeimage-3.15.4.so"


La libreria FreeImage consente, fra l'altro, di convertire un file immagine da un tipo ad un altro, come ad esempio in un file formato GIF.

Mostriamo di seguito un semplice codice per convertire un file immagine di tipo JPEG in GIF:

Library "libfreeimage-3.15.4"

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 GIF_DEFAULT As Integer = 0
Private Enum FIQ_WUQUANT = 0, FIQ_NNQUANT

' void FreeImage_Initialise(BOOL load_local_plugins_only)
' Initialises the library.
Private Extern FreeImage_Initialise(llpoB 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)
' 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

' FIBITMAP * FreeImage_ColorQuantize(FIBITMAP *dib, FREE_IMAGE_QUANTIZE quantize)
' Quantizes a high-color 24-bit bitmap to an 8-bit palette color bitmap.
Private Extern FreeImage_ColorQuantize(dib As Pointer, quantize As Integer) As Pointer

' BOOL FreeImage_Save(FREE_IMAGE_FORMAT fif, FIBITMAP *dib, const char *filename, int flags)
' 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 im As Pointer
 Dim bo As Boolean
 
  FreeImage_Initialise(False)
  
  cp = FreeImage_GetCopyrightMessage()
  Print cp

  im = FreeImage_Load(FIF_JPEG, "/percorso/del/file/immagine/da/convertire.jpg", JPEG_DEFAULT)
  If im = 0 Then Error.Raise("Impossibile caricare l'immagine !")
  
' Per ottenere la conversione in un file di tipo GIF, è necessario usare la funzione "FreeImage_ColorQuantize()":
  im = FreeImage_ColorQuantize(im, FIQ_WUQUANT)
  If im = 0 Then Error.Raise("Errore alla funzione 'FreeImage_ColorQuantize' !")
   
  bo = FreeImage_Save(FIF_GIF, im, "/percorso/del/file.gif", GIF_DEFAULT)
  If bo = False Then Error.Raise("Impossibile salvare il nuovo file immagine GIF !")
  
  FreeImage_Unload(im)

  FreeImage_DeInitialise()

End



Riferimenti