Ottenere alcune informazioni sul file immagine con le funzioni del API di GTK+3 e GDK-PixBuf
Da Gambas-it.org - Wikipedia.
Versione del 26 nov 2014 alle 19:27 di Vuott (Discussione | contributi)
GTK+3 è una libreria per la creazione di interfacce grafiche utente. GDK-PixBuf è una libreria grafica per il caricamento e la manipolazione delle immagini.
Fra molteplici potenzialità esse consentono di ottenere alcune informazioni sui file immagine.
Sarà necessario avere installata nel sistema la libreria: libgtk-3.so.0.1000.8
Mostriamo un semplice esempio pratico:
Public Struct GdkPixbufFormat name As Pointer signature As Pointer domain As Pointer description As Pointer mime_types As Pointer extensions As Pointer flags As Integer disabled As Boolean license As Pointer End Struct Library "libgtk-3:0.1000.8" ' GdkPixbuf * gdk_pixbuf_new_from_file (const char *filename, GError **error) ' Creates a new pixbuf by loading an image from a file. Private Extern gdk_pixbuf_new_from_file(filename As String, GError As Pointer) As Pointer ' guchar * gdk_pixbuf_get_pixels (const GdkPixbuf *pixbuf) ' Queries a pointer to the pixel data of a pixbuf. Private Extern gdk_pixbuf_get_pixels(GdkPixbuf As Pointer) As Pointer ' int gdk_pixbuf_get_width (const GdkPixbuf *pixbuf) ' Queries the width of a pixbuf. Private Extern gdk_pixbuf_get_width(GdkPixbuf As Pointer) As Integer ' int gdk_pixbuf_get_height (const GdkPixbuf *pixbuf) ' Queries the height of a pixbuf. Private Extern gdk_pixbuf_get_height(GdkPixbuf As Pointer) As Integer ' int gdk_pixbuf_get_n_channels (const GdkPixbuf *pixbuf) ' Queries the number of channels of a pixbuf. Private Extern gdk_pixbuf_get_n_channels(GdkPixbuf As Pointer) As Integer ' gboolean gdk_pixbuf_get_has_alpha (const GdkPixbuf *pixbuf) ' Queries whether a pixbuf has an alpha channel (opacity information). Private Extern gdk_pixbuf_get_has_alpha(GdkPixbuf As Pointer) As Boolean ' GdkPixbufFormat * gdk_pixbuf_get_file_info (const gchar *filename, gint *width, gint *height) ' Parses an image file far enough to determine its format and size. Private Extern gdk_pixbuf_get_file_info(filename As String, width As Pointer, height As Pointer) As Pointer Public Sub Main() Dim nomefile As String = "/percorso7del/file/immagine" Dim w, wi, h, hi As Integer Dim Pixbuf, p As Pointer Dim st As Stream Dim i As Integer Dim b, c As Byte Dim bo As Boolean Dim PixbufFormat As New GdkPixbufFormat Pixbuf = gdk_pixbuf_new_from_file(nomefile, 0) w = gdk_pixbuf_get_width(Pixbuf) Print "Larghezza: "; Null, w; " pixel" h = gdk_pixbuf_get_height(Pixbuf) Print "Altezza: "; Null, h; " pixel" c = gdk_pixbuf_get_n_channels(Pixbuf) Print "Canali: "; Null, c bo = gdk_pixbuf_get_has_alpha(Pixbuf) Print "Canale Alfa: "; Null, bo ''''''''''''''''''''''''''''''''''''''''''''''''''''''''' PixbufFormat = gdk_pixbuf_get_file_info(nomefile, VarPtr(wi), VarPtr(hi)) Print "\nLarghezza: "; Null, wi; " pixel" Print "Altezza: "; Null, hi; " pixel" With PixbufFormat Print String@(.name) ' Il nome del formato immagine Print String@(.domain) ' Il contrassegno del modulo Print String@(.description) ' Il dominio del messaggio per la descrizione Print String@(Pointer@(.mime_types)) ' Una descrizione del formato immagine Print String@(Pointer@(.extensions)) ' Un array di MIME-types del formato immagine Print .flags ' Combinazione di flags che specifica ulteriori dettagli sulle operazioni supportate Print String@(.license) ' Informazione sulla licenza relativa al formato immagine End With End