Regolare colori RGB – Codice VB.NET



Categoria dell'articolo: Codice VB.NET

Listati in codice Visual Basic.NET, elaborati o rielaborati e adattati da IngAC con la versione 2015. Funzioni e subroutine varie utili alla creazione di programmi.





Articolo pubblicato da:



Se trovi interessante l'articolo che ti stai accingendo a leggere, metti un mi piace e condividi! Be Social!



Come regolare colori RGB di un’immagine: intensificare o diminuire l’intensità dei colori Rosso, Verde e Blue. Gestire il canale Alpha (opzionale).


Introduzione

Può capitare che in alcune parti del nostro programma occorra modificare per qualche motivo l’intensità di uno o più canali (compreso quello Alpha) di un’immagine. Ad esempio se stiamo implementando un elaboratore di immagini, sapere come regolare colori RGB tramite vb.net è uno dei passi fondamentali. La funzione che ho implementato, girando qua e la sul web e rielaborando il tutto, che si occupa appunto di regolare colori RGB di immagini è: IngAC_IMMAGINE_RGBA(ByVal Immagine As Bitmap, RED As Single, ByVal GREEN As Single, ByVal BLUE As Single, Optional ByVal ALPHA As Single = 0) As Bitmap. 

Public Function IngAC_IMMAGINE_RGBA(ByVal Immagine As Bitmap, RED As Single,
                       ByVal GREEN As Single, ByVal BLUE As Single,
                       Optional ByVal ALPHA As Single = 0) As Bitmap
        ' Range [0,255]
        If RED < 0 Then RED = 0
        If RED > 255 Then RED = 255
        If GREEN < 0 Then GREEN = 0
        If GREEN > 255 Then GREEN = 255
        If BLUE < 0 Then BLUE = 0
        If BLUE > 255 Then BLUE = 255
        If ALPHA < 0 Then ALPHA = 0
        If ALPHA > 255 Then ALPHA = 255
        Dim sr, sg, sb, sa As Single
        ' Si normalizzano i vari colori a 1
        sr = RED / 255
        sg = GREEN / 255
        sb = BLUE / 255
        sa = ALPHA / 255
        ' Si crea la color_matrix
        Dim Color_Matrix As Single()() = {
                        New Single() {1, 0, 0, 0, 0},
                        New Single() {0, 1, 0, 0, 0},
                        New Single() {0, 0, 1, 0, 0},
                        New Single() {0, 0, 0, 1, 0},
                        New Single() {sr, sg, sb, sa, 1}}
        ' Si crea una copia dell'immagine di partenza 
        Dim bmp As New Bitmap(Immagine)
        Dim imgattr As New ImageAttributes()
        Dim rc As New Rectangle(0, 0, Immagine.Width, Immagine.Height)
        Dim g As Graphics = Graphics.FromImage(Immagine)
        Dim cm As New ColorMatrix(Color_Matrix)
        ' Si associa la Color_Matrix con una ImageAttributes
        imgattr.SetColorMatrix(cm)
        ' Si applica la color_matrix all'immagine
        g.DrawImage(bmp, rc, 0, 0, Immagine.Width, Immagine.Height,
                                  GraphicsUnit.Pixel, imgattr)
        ' Reset
        g.Dispose()
        Return Immagine ' Restituisce l'immagine modificata
    End Function
 

Come regolare colori RGB di una immagine in VB.NET

La funzione IngAC_IMMAGINE_RGBA ha come input:

  • Immagine che è l’immagine orginale che può provenire sia da file che da picturebox o anche da altri oggetti image o bitmap.
  • RED che rappresenta l’intensità del colore rosso e varia tra 0 e 255;
  • GREEN che rappresenta l’intensità del colore verde e varia tra 0 e 255;
  • BLUE che rappresenta l’intensità del colore blu e varia tra 0 e 255;
  • ALPHA (opzionale) che rappresenta l’intensità dell trasparenza e varia tra 0 (nessuna trasparenza) e 255 (massima trasparenza);

In output si avrà un’immagine uguale all’originale ma modificata nei colori, da usare come più ci aggrada.

Funzionamento di IngAC_IMMAGINE_RGBA ()

Il funzionamento è lineare; occorre innanzi tutto includere Imports System.Drawing.Imaging che permette di accedere alle funzionalità grafiche di vb.net e alle varie classi inerenti. Effettuato il controllo sull’input e creata la matrice color_matrix, il tutto per permettere una maggiore velocità di elaborazione rispetto ai classici cicli for pixel per pixel, si passa alla definizione dell’area da elaborare (tramite l’oggetto rectangle) e infine all’elaborazione vera e propria con g.DrawImage.

Link Utili:

Regolare colori RGB - Codice VB.NET

Regolare colori RGB – Codice VB.NET



Random Post

Cozze, cozza – Interpretazione dei sogni

Cozze - Interpretazione dei sogni

Le cozze, i mitili nei sogni: significati, interpretazioni, simbologia e numeri della smorfia associati al sogno. Le cozze in sogno sono di solito un ottimo auspicio. Nei sogni esse sono un simbolo d...

Vai al post...

Onde di mare – Ingegneria marittima

Onde di mare - Ingegneria marittima

Cosa sono le onde di mare: una breve introduzione Le onde di mare sono un moto della superficie delle acque. Esistono onde che si formano per la circolazione di correnti marine causate di differe...

Vai al post...

Giocare a carte – Interpretazione dei sogni

Giocare a carte - Interpretazione dei sogni

Sognare di giocare a carte; con carte napoletane, piacentine, modenesi, francesi, tarocchi: significato e interpretazione del sogno. Numeri della smorfia associati. Le carte da gioco sono disponibili ...

Vai al post...

PUBBLICITÀ



Disclaimer:


Questo blog NON è un prodotto editoriale ai sensi della legge n° 62 del 7 marzo 2001. Le immagini tratte da internet che possano violare i diritti di autore, previa comunicazione, attraverso la sezione -contatti-, verranno prontamente rimosse o sostituite.

Copyright:


I contenuti presenti su ROMOLETTO BLOG dei quali è autore il proprietario del blog non possono essere copiati, riprodotti, redistribuiti perché appartenenti all autore stesso. Si vieta la copia e la riproduzione dei contenuti in qualsiasi modo o forma. Si vieta altresì la pubblicazione e la redistribuzione dei contenuti non autorizzata espressamente dell autore.


Copyright © 2011 / 2019 - ROMOLETTO BLOG - All Right Reserved

IngAC

Informazioni su Romoletto Blog

Ingegnere Civile, Blogger, Programmatore VB.NET, Lezioni private per scuole medie inferiori e superiori. Per contattarmi scorri la home fino in fondo e vai al form -Contatti-

Navigazione per Articoli della stessa Categoria