Differenze tra le versioni di "Creare un file immagine PNG trasparente con le funzioni esterne del API di Cairo"
Da Gambas-it.org - Wikipedia.
Riga 1: | Riga 1: | ||
Con la libreria '''Cairo''' è possibile, fra l'altro, creare un file immagine trasparente di tipo PNG (ma anche SVG, PDF e Post-Script). | Con la libreria '''Cairo''' è possibile, fra l'altro, creare un file immagine trasparente di tipo PNG (ma anche SVG, PDF e Post-Script). | ||
− | Per fare ciò, si dovranno utilizzare alcune funzioni esterne della libreria | + | Per fare ciò, si dovranno utilizzare alcune funzioni esterne della libreria condivisa: "''libcairo.so.2.11600.0'' " |
− | |||
Mostriamo di seguito un semplice esempio, nel quale verrà creato un file immagine trasparente in formato PNG: | Mostriamo di seguito un semplice esempio, nel quale verrà creato un file immagine trasparente in formato PNG: | ||
Riga 46: | Riga 45: | ||
<FONT Color=gray>' ''Crea la superficie dell'immagine (in questo caso trasparente):''</font> | <FONT Color=gray>' ''Crea la superficie dell'immagine (in questo caso trasparente):''</font> | ||
surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 400, 200) | surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 400, 200) | ||
+ | If surface == 0 Then Error.Raise("Errore !") | ||
err = cairo_surface_write_to_png(surface, percorsoFile) | err = cairo_surface_write_to_png(surface, percorsoFile) | ||
Riga 54: | Riga 54: | ||
Print "Altezza: ", Null; cairo_image_surface_get_height(surface); " pixel" | Print "Altezza: ", Null; cairo_image_surface_get_height(surface); " pixel" | ||
If cairo_image_surface_get_format(surface) = CAIRO_FORMAT_ARGB32 Then Print "Formato: ", Null; "RGBA (32 bit)" | If cairo_image_surface_get_format(surface) = CAIRO_FORMAT_ARGB32 Then Print "Formato: ", Null; "RGBA (32 bit)" | ||
− | |||
<FONT Color=gray>' ''Va in chiusura:''</font> | <FONT Color=gray>' ''Va in chiusura:''</font> |
Versione attuale delle 21:03, 30 nov 2021
Con la libreria Cairo è possibile, fra l'altro, creare un file immagine trasparente di tipo PNG (ma anche SVG, PDF e Post-Script).
Per fare ciò, si dovranno utilizzare alcune funzioni esterne della libreria condivisa: "libcairo.so.2.11600.0 "
Mostriamo di seguito un semplice esempio, nel quale verrà creato un file immagine trasparente in formato PNG:
Library "libcairo:2.11600.0" Private Const CAIRO_FORMAT_ARGB32 As Integer = 0 ' cairo_surface_t * cairo_image_surface_create(cairo_format_t formatI, int width, int height) ' Creates an image surface of the specified format and dimensions. Private Extern cairo_image_surface_create(formatI As Integer, width As Integer, height As Integer) As Pointer ' cairo_status_t cairo_surface_write_to_png(cairo_surface_t *surface, const char *filename) ' Writes the contents of surface to a new file filename as a PNG image. Private Extern cairo_surface_write_to_png(cairo_surface As Pointer, filename As String) As Integer ' cairo_format_t cairo_image_surface_get_format(cairo_surface_t *surface) ' Get the format of the surface. Private Extern cairo_image_surface_get_format(cairo_surface As Pointer) As Integer ' int cairo_image_surface_get_width(cairo_surface_t *surface) ' Get the width of the image surface in pixels. Private Extern cairo_image_surface_get_width(cairo_surface As Pointer) As Integer ' int cairo_image_surface_get_height(cairo_surface_t *surface) ' Get the height of the image surface in pixels. Private Extern cairo_image_surface_get_height(cairo_surface As Pointer) As Integer ' void cairo_destroy(cairo_t *cr) ' Decreases the reference count on cr by one. Private Extern cairo_destroy(cr As Pointer) ' void cairo_surface_destroy(cairo_surface_t *surface) ' Decreases the reference count on surface by one. Private Extern cairo_surface_destroy(cairo_surface As Pointer) Public Sub Main() Dim surface As Pointer Dim err As Byte Dim percorsoFile As String = "/tmp/trasparente_Cairo.png" ' Crea la superficie dell'immagine (in questo caso trasparente): surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 400, 200) If surface == 0 Then Error.Raise("Errore !") err = cairo_surface_write_to_png(surface, percorsoFile) If err > 0 Then Error.Raise("Errore nella creazione del file immagine .png !") ' Mostra alcune caratteristiche generali sull'immagine creata: Print "Larghezza: ", Null; cairo_image_surface_get_width(surface); " pixel" Print "Altezza: ", Null; cairo_image_surface_get_height(surface); " pixel" If cairo_image_surface_get_format(surface) = CAIRO_FORMAT_ARGB32 Then Print "Formato: ", Null; "RGBA (32 bit)" ' Va in chiusura: cairo_destroy(cairo) cairo_surface_destroy(surface) End