|
|
Riga 1: |
Riga 1: |
− | Come si sa, salvare un'immagine in un file di formato ''.GIF'' (''Graphics Interchange Format''), in Gambas non è attualmente possibile. Gambas possiede, sì, risorse per caricare file immagine di tipo ''.gif'', ma non per salvarle.
| + | <FONT Color=Red>Pagina in costruzione</font> |
− | | |
− | Un aiuto, però, per la generazione di file immagine di tipo ''GIF'' può giungerci dalle risorse della libreria ''GIFLIB'', la quale consente di caricare, gestire, maniplare, creare ''ex novo'' e salvare file immagine in fomato ''GIF''.
| |
− | | |
− | Per poter utilizzare al meglio le risorse della libreria ''GifLib'' con Gambas, suggeriamo di utilizzare la relativa libreria dinamica condivisa nella seguente versione: ''libgif.so.7.0.0''
| |
− | | |
− | | |
− | Mostriamo di seguito un breve esempio per generare ''ex novo'' un semplice file immagine trasparente di tipo ''.gif'':
| |
− | Private Const QuantitasColori As Integer = 256
| |
− | Private Const DimMappaColori As Integer = 8
| |
− |
| |
− |
| |
− | Library "libgif:7.0.0"
| |
− |
| |
− | Private Enum GIF_ERROR = 0, GIF_OK
| |
− |
| |
− | <FONT Color=gray>' ''ColorMapObject * GifMakeMapObject (int ColorCount, const GifColorType * ColorMap)''
| |
− | ' ''Allocate a color map of given size.''</font>
| |
− | Private Extern GifMakeMapObject(ColorCount As Integer, ColorMap As Pointer) As Pointer
| |
− |
| |
− | <FONT Color=gray>' ''GifFileType * EGifOpenFileName(const char *FileName, const bool TestExistence, int *Error)''
| |
− | ' ''Open a new GIF file for write, specified by name.''</font>
| |
− | Private Extern EGifOpenFileName(FileName As String, TestExistence As Boolean, ErrorP As Pointer) As Pointer
| |
− |
| |
− | <FONT Color=gray>' ''int EGifPutScreenDesc(GifFileType *GifFile, const int Width, const int Height, const int ColorRes, const int BackGround, const ColorMapObject *ColorMap)''
| |
− | ' ''This routine should be called immediately following the GIF file opening.''</font>
| |
− | Private Extern EGifPutScreenDesc(GifFileType As Pointer, wI As Integer, hI As Integer, ColorRes As Integer, BackGround As Integer, ColorMap As Pointer) As Integer
| |
− |
| |
− | <FONT Color=gray>' ''int EGifPutImageDesc(GifFileType *GifFile, const int Left, const int Top, const int Width, const int Height, const bool Interlace, const ColorMapObject *ColorMap)''
| |
− | ' ''This routine should be called before any attempt to dump an image - any call to any of the pixel dump routines.''</font>
| |
− | Private Extern EGifPutImageDesc(GifFileType As Pointer, LeftI As Integer, Top As Integer, wI As Integer, hI As Integer, Interlace As Boolean, ColorMap As Pointer) As Integer
| |
− |
| |
− | <FONT Color=gray>' ''int EGifCloseFile(GifFileType *GifFile, int *ErrorCode)''
| |
− | ' ''Closes the GIF file.''</font>
| |
− | Private Extern EGifCloseFile(GifFileType As Pointer, ErrorCode As Pointer) As Integer
| |
− |
| |
− |
| |
− | '''Public''' Sub Main()
| |
− |
| |
− | Dim Width, Height, err As Integer
| |
− | Dim MappaColori, fileGIF As Pointer
| |
− |
| |
− | <FONT Color=gray>' ''Impostiamo a piacere le dimensioni in pixel dell'immagine da creare:''</font>
| |
− | Width = 640
| |
− | Height = 400
| |
− |
| |
− | MappaColori = GifMakeMapObject(QuantitasColori, Null)
| |
− | If IsNull(MappaColori) Then Error.Raise("Impossibile allocare memoria !")
| |
− |
| |
− | fileGIF = EGifOpenFileName("''/percorso/del/file.gif''", 0, 0)
| |
− | If IsNull(fileGIF) Then Error.Raise("Impossibile creare il file GIF !")
| |
− |
| |
− | err = EGifPutScreenDesc(fileGIF, Width, Height, DimMappaColori, 0, MappaColori)
| |
− | If err = GIF_ERROR Then Error.Raise("Errore alla funzione 'EGifPutScreenDesc()' !")
| |
− |
| |
− | err = EGifPutImageDesc(fileGIF, 0, 0, Width, Height, False, Null)
| |
− | If err = GIF_ERROR Then Error.Raise("Errore alla funzione 'EGifPutImageDesc()' !")
| |
− |
| |
− | If EGifCloseFile(fileGIF, 0) = GIF_ERROR Then Error.Raise("Errore nella chiusura del file GIF !")
| |
− |
| |
− | '''End'''
| |
− | | |
− | | |
− | | |
− | | |
− | =Riferimenti=
| |
− | * [http://giflib.sourceforge.net/gif_lib.html The GIFLIB Library]
| |
− | * [http://fossies.org/dox/giflib-5.1.0/index.html giflib API Documentation]
| |