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:

Condividi articolo:

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

Energia dal Mare : REWEC 3

 REWEC 3 :Energia dal Mare! Le fonti di energia pulita sono praticamente inesauribili: dal sole al vento, fino al tentativo di sfruttare l’energia delle onde di mare. La nostra dipendenza dall&...

Vai al post...

Decompressione File in formato Zip – Codice VB.NET

Decompressione file Zip - Codice VB.NET

Decompressione file in formato ZIP: come fare a gestire la decompressione di file Zip in un qualsiasi file, direttamente da codice VB.NET, senza librerie esterne. Introduzione Il listato seguente per...

Vai al post...

PREVISIONE LOTTO n° 49 di 150 per GIOVEDÌ 30 MARZO 2017

Previsione Lotto 30 Marzo 2017

PREVISIONE LOTTO n° 49 di 150 per GIOVEDÌ 30 MARZO 2017 Esito della previsione precedente: 2)FIRENZE :1euro 10eLotto; 3)FIRENZE :1euro 10eLotto. Previsione “beta V3” test precedente: 2)...

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 / 2017 - ROMOLETTO BLOG - All Right Reserved

IngAC

Informazioni su Romoletto

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