Differenze tra le versioni di "Creare un file immagine PNG trasparente con le funzioni esterne del API di Cairo"
Da Gambas-it.org - Wikipedia.
(Una versione intermedia di uno stesso utente non è mostrata) | |||
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: | ||
− | Library "libcairo:2. | + | Library "libcairo:2.11600.0" |
Private Const CAIRO_FORMAT_ARGB32 As Integer = 0 | Private Const CAIRO_FORMAT_ARGB32 As Integer = 0 | ||
Riga 45: | Riga 44: | ||
<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) | |
+ | 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 !") | |
<FONT Color=gray>' ''Mostra alcune caratteristiche generali sull'immagine creata:''</font> | <FONT Color=gray>' ''Mostra alcune caratteristiche generali sull'immagine creata:''</font> | ||
− | + | 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)" | |
− | |||
<FONT Color=gray>' ''Va in chiusura:''</font> | <FONT Color=gray>' ''Va in chiusura:''</font> | ||
− | + | cairo_destroy(cairo) | |
− | + | cairo_surface_destroy(surface) | |
'''End''' | '''End''' | ||
− | |||
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