Come ottenere il negativo di una immagine: ovvero invertire i colori una semplice funzione in codice VB.NET
Introduzione
Può capitare che in alcune parti del nostro programma occorra ottenere per qualche motivo il negativo di una immagine. Ad esempio, se stiamo implementando un elaboratore di immagini, sapere come trasformare in negativo un’ immagine, tramite codice 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 ottenere il negativo immagine è: IngAC_IMMAGINE_NEGATIVO (ByVal Immagine As Bitmap) As Bitmap.
Public Function IngAC_IMMAGINE_NEGATIVO(ByVal Immagine As Bitmap) As Bitmap
' Si crea la Negative_Matrix
Dim Negative_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() {1, 1, 1, 0, 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(Negative_Matrix)
' Si associa la Negative_Matrix con una ImageAttributes
imgattr.SetColorMatrix(cm)
' Si applica la Negative_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
La funzione Negativo immagine in VB.NET
La funzione IngAC_IMMAGINE_NEGATIVO 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.
In output si avrà un’immagine uguale all’originale ma modificata in negativo, da usare come più ci aggrada.
Funzionamento di IngAC_IMMAGINE_NEGATIVO()
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. Creata la matrice Negative_Matrix, 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:
- MSDN -> Classe Bitmap
- MSDN -> Classe Image
- MSDN -> System.Drawing.Imaging
- MSDN -> DrawImage
- Elenco di tutti i listati VB.NET su Romoletto Blog

Negativo immagine – Codice VB.NET
Link sponsorizzati inseriti nella pagina.
Random Post
PUBBLICITÀ
Disclaimer:
|
Copyright:
|