Differenze tra le versioni di "Individuare il colore di un determinato pixel"
Riga 1: | Riga 1: | ||
− | + | Mostriamo di seguito un paio di modalità per individuare il colore di un determinato pixel di un'immagine. | |
+ | |||
+ | |||
+ | ==Uso delle sole risorse di Gambas== | ||
+ | Volendo utilizzare le sole riorse di Gambas, si potrà utilizzare semplicemente il seguente codice: | ||
'''Public''' Sub Button1_Click() | '''Public''' Sub Button1_Click() | ||
Riga 16: | Riga 20: | ||
− | + | ===Individuare il colore di un pixel di un'immagine cliccandoci sopra con il mouse=== | |
Mostriamo un esempio nel quale, cliccando su un'immagine inserita in una ''PictureBox'', viene mostrato in una ''TextLabel'' il colore del pixel, nonché in console il corrispondente numero: | Mostriamo un esempio nel quale, cliccando su un'immagine inserita in una ''PictureBox'', viene mostrato in una ''TextLabel'' il colore del pixel, nonché in console il corrispondente numero: | ||
Private im As Image | Private im As Image | ||
Riga 58: | Riga 62: | ||
'''End''' | '''End''' | ||
+ | |||
+ | |||
+ | ==Uso delle risorse della libreria ''Libgd''== | ||
+ | Si potranno anche utilizzare anche le risorse del API di ''GD''. | ||
+ | |||
+ | Per poter fruire in Gambas delle risorse della libreria ''GD'', è necessario installare e richiamare la libreria dinamica e condivisa: "''libgd.so.3.0.0''" | ||
+ | |||
+ | |||
+ | Mostriamo un semplice esempio: | ||
+ | Library "libgd:3.0.0" | ||
+ | |||
+ | <FONT Color=gray>' ''gdImagePtr gdImageCreateFromPng (FILE * infile)'' | ||
+ | ' ''Creates an image.''</font> | ||
+ | Private Extern gdImageCreateFromJpeg(infile As Pointer) As Pointer | ||
+ | |||
+ | <FONT Color=gray>' ''int gdImageGetPixel (gdImagePtr im, int x, int y)''</font> | ||
+ | Private Extern gdImagePng(gdIP As Pointer, outfile As Pointer) | ||
+ | |||
+ | <FONT Color=gray>' ''void gdImageDestroy (gdImagePtr im)''</font> | ||
+ | Private Extern gdImageDestroy(gdIP As Pointer) | ||
+ | |||
+ | |||
+ | Library "libc:6" | ||
+ | |||
+ | <FONT Color=gray>' ''FILE *fopen(const char *__restrict __filename, const char *__restrict __modes)'' | ||
+ | ' ''Open a file and create a new stream for it.''</font> | ||
+ | Private Extern fopen(__filename As String, __mode As String) As Integer | ||
+ | |||
+ | <FONT Color=gray>' ''int fclose(FILE *__stream)'' | ||
+ | ' ''Closes the stream. All buffers are flushed.''</font> | ||
+ | Private Extern fclose(flstream As Pointer) As Integer | ||
+ | |||
+ | |||
+ | '''Public''' Sub Main() | ||
+ | |||
+ | Dim fl, im as Pointer | ||
+ | Dim i As Integer | ||
+ | |||
+ | fl = fopen("<FONT Color=gray>''/percorso/del/file.png''</font>", "r") | ||
+ | |||
+ | im = gdImageCreateFromPng(fl) | ||
+ | |||
+ | <FONT Color=gray>' ''Individua il pixel ad esempio alle coordinate x=20, y=20:''</font> | ||
+ | i = gdImageGetPixel(im, 20, 20) | ||
+ | |||
+ | Print "Il colore del pixel è: "; Hex(i, 6) | ||
+ | |||
+ | <FONT Color=gray>' ''Va in chiusura:''</font> | ||
+ | fclose(fl) | ||
+ | gdImageDestroy(im) | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | =Note= | ||
+ | [1] Per analogia di argomento si segnala anche [[Individuare_i_colori_dei_pixel_di_una_immagine|questa pagina della Wiki]]. |
Versione delle 09:03, 29 ago 2016
Mostriamo di seguito un paio di modalità per individuare il colore di un determinato pixel di un'immagine.
Indice
Uso delle sole risorse di Gambas
Volendo utilizzare le sole riorse di Gambas, si potrà utilizzare semplicemente il seguente codice:
Public Sub Button1_Click() Dim im As Image Dim nCol As Integer im = Image.Load("/percorso/del/file/immagine") ' Individueremo il pixel dell'immagine mediante le sue coordinate x ed y (che ovviamente dovranno essere specificate): nCol = im[x, y] Print "Il numero decimale del colore del pixel è: "; nCol, "&h"; Hex(nCol, 8) End
Verrà restituito il numero decimale del colore del pixel, determinato dalle coordinate x ed y all'interno dell'immagine.
Individuare il colore di un pixel di un'immagine cliccandoci sopra con il mouse
Mostriamo un esempio nel quale, cliccando su un'immagine inserita in una PictureBox, viene mostrato in una TextLabel il colore del pixel, nonché in console il corrispondente numero:
Private im As Image Public Sub Form_Open() Dim pc As Picture ' Carichiamo l'immagine in una variabile di tipo "Image"... im = Image.Load("/percorso/del/file/immagine") ' ...e la convertiamo in una "Picture": pc = im.Picture ' Rendiamo la "PictureBox" delle medesime dimensioni dell'immagine caricata: With PictureBox1 .W = im.W .H = im.H ' Quindi carichiamo l'immagine, contenuta nella variabile di tipo "Picture", nella "PictureBox": .Picture = pc End With End Public Sub PictureBox1_MouseDown() Dim nCol As Integer ' Individuiamo le coordinate x ed y del puntatore del mouse, quando clicchiamo nella "PictureBox" sull'immagine: With Mouse nCol = im[.X, .Y] End With ' Quindi otteniamo il numero del colore del pixel cliccato con il mouse... Print "Il numero del colore del pixel cliccato è: "; nCol, "&h"; Hex(nCol, 8) ' ...nonché mostriamo il suo colore nella "TextLabel" posta sul Form: TextLabel1.Background = nCol End
Uso delle risorse della libreria Libgd
Si potranno anche utilizzare anche le risorse del API di GD.
Per poter fruire in Gambas delle risorse della libreria GD, è necessario installare e richiamare la libreria dinamica e condivisa: "libgd.so.3.0.0"
Mostriamo un semplice esempio:
Library "libgd:3.0.0" ' gdImagePtr gdImageCreateFromPng (FILE * infile) ' Creates an image. Private Extern gdImageCreateFromJpeg(infile As Pointer) As Pointer ' int gdImageGetPixel (gdImagePtr im, int x, int y) Private Extern gdImagePng(gdIP As Pointer, outfile As Pointer) ' void gdImageDestroy (gdImagePtr im) Private Extern gdImageDestroy(gdIP As Pointer) Library "libc:6" ' FILE *fopen(const char *__restrict __filename, const char *__restrict __modes) ' Open a file and create a new stream for it. Private Extern fopen(__filename As String, __mode As String) As Integer ' int fclose(FILE *__stream) ' Closes the stream. All buffers are flushed. Private Extern fclose(flstream As Pointer) As Integer Public Sub Main() Dim fl, im as Pointer Dim i As Integer fl = fopen("/percorso/del/file.png", "r") im = gdImageCreateFromPng(fl) ' Individua il pixel ad esempio alle coordinate x=20, y=20: i = gdImageGetPixel(im, 20, 20) Print "Il colore del pixel è: "; Hex(i, 6) ' Va in chiusura: fclose(fl) gdImageDestroy(im) End
Note
[1] Per analogia di argomento si segnala anche questa pagina della Wiki.