Differenze tra le versioni di "Rendere trasparente una immagine in base ad un colore specifico"
Riga 5: | Riga 5: | ||
Esempio: | Esempio: | ||
− | + | Public Sub Button1_Click() | |
Dim im as New Image | Dim im as New Image | ||
− | im = im.Load("<FONT color= | + | im = im.Load("<FONT color=darkgreen>''/percorso/del/file/immagine''</font>") |
− | im = im<FONT color= | + | im = im<FONT color=red>.Transparent</font>(Color.Red) |
− | + | End | |
Più il pixel è un colore vicino al colore specificato, più diventa trasparente. | Più il pixel è un colore vicino al colore specificato, più diventa trasparente. | ||
Riga 19: | Riga 19: | ||
− | + | ===Uso dei ''Memory Stream''=== | |
− | E' possibile, usando la risorsa | + | E' possibile, usando la risorsa ''[[Definizione ed uso dei Memory Stream|Memory Stream]]'', con un ciclo modificare il byte del canale ''Alfa'' di un pixel dell'immagine, assegnandogli il valore zero. |
Mostriamo un esempio, nel quale verranno resi trasparenti i pixel di colore bianco (&FFFFFFFF&). In pratica verrà azzerato il canale ''Alfa'', ossia il 4° byte, del pixel: &FFFFFF<B>00</b>. | Mostriamo un esempio, nel quale verranno resi trasparenti i pixel di colore bianco (&FFFFFFFF&). In pratica verrà azzerato il canale ''Alfa'', ossia il 4° byte, del pixel: &FFFFFF<B>00</b>. | ||
− | + | Public Sub Button1_Click() | |
Dim im As Image | Dim im As Image | ||
Riga 29: | Riga 29: | ||
Dim st As Stream | Dim st As Stream | ||
− | im = Image.FromString("<FONT color= | + | im = Image.FromString("<FONT color=darkgreen>''/percorso/del/file/immagine''</font>") |
st = Memory im.Data For Write | st = Memory im.Data For Write | ||
Riga 45: | Riga 45: | ||
PictureBox1.Image = im | PictureBox1.Image = im | ||
− | + | End |
Versione attuale delle 15:45, 3 lug 2024
E' possibile rendere trasparente un'immagine sulla base di un colore specifico.
In tal modo verrà resa trasparente quella parte dell'immagine ove è presente quel colore specificato.
Per ottenere questo effetto, si utilizzerà il Metodo ".Transparent()" della Classe "Image".
Esempio:
Public Sub Button1_Click() Dim im as New Image im = im.Load("/percorso/del/file/immagine") im = im.Transparent(Color.Red) End
Più il pixel è un colore vicino al colore specificato, più diventa trasparente.
Se non viene specificato il colore, allora si presume sia il colore bianco.
Uso dei Memory Stream
E' possibile, usando la risorsa Memory Stream, con un ciclo modificare il byte del canale Alfa di un pixel dell'immagine, assegnandogli il valore zero.
Mostriamo un esempio, nel quale verranno resi trasparenti i pixel di colore bianco (&FFFFFFFF&). In pratica verrà azzerato il canale Alfa, ossia il 4° byte, del pixel: &FFFFFF00.
Public Sub Button1_Click() Dim im As Image Dim i As Integer Dim st As Stream im = Image.FromString("/percorso/del/file/immagine") st = Memory im.Data For Write For i = 0 To im.Pixels.Max Se il pixel è bianco, allora azzera il suo canale "Alfa": If im.Pixels[i] == CLong(&FFFFFFFF) Then Con "(i * 4)" individua il primo byte del pixel corrente da rendere trasparente; mentre con la somma "+ 3" individua il 4° byte (canale "Alfa") del pixel corrente: Seek #st, (i * 4) + 3 Write #st, 0 As Byte Endif Next st.Close PictureBox1.Image = im End