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.
(5 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 | + | 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. | + | 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 33: | Riga 44: | ||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
+ | Dim cp As String | ||
Dim fbm As Pointer | Dim fbm As Pointer | ||
Dim bo As Boolean | Dim bo As Boolean | ||
Riga 38: | Riga 50: | ||
<FONT Color=gray>' ''Inizializza la libreria "FreeImage":''</font> | <FONT Color=gray>' ''Inizializza la libreria "FreeImage":''</font> | ||
FreeImage_Initialise(False) | FreeImage_Initialise(False) | ||
+ | |||
+ | cp = FreeImage_GetCopyrightMessage() | ||
+ | Print cp | ||
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>", | + | 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 54: | 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