2013-05-13 8 views
6

Sto avendo problemi con l'immagine di alleggerimento. So che potrei farlo aumentando/diminuendo i valori dei pixel, tuttavia non è quello che sto cercando. Mi è stato detto che c'è un modo che non richiede di scorrere tutti i pixel e che è molto più veloce. Come fare questo? Grazie.Come schiarire l'immagine in C# senza effettivamente iterare attraverso tutti i pixel dell'immagine?

+0

utilizzare una libreria per questo? Hai cercato un po '? Se usi WPF, sono sicuro che c'è qualcosa che puoi fare. –

+0

Sto usando i moduli di Windows. – Patryk

+1

Forse sovrapponi un elemento semitrasparente sopra l'immagine? – David

risposta

0

Per modificare la luminosità di una foto, è sempre necessario modificare ciascun pixel (se non è un grafico basato su vettori). iterare attraverso tutti i pixel dovrebbe essere l'unico modo che penso. Forse c'è una struttura che fa il lavoro per te. oppure puoi cercare un algoritmo veloce che combini una matrice di pixel a un subpixel. tutto sommato ci sono molte possibilità. l'elaborazione delle immagini è un argomento complesso.

potete trovare alcuni esempi qui: http://www.authorcode.com/making-image-editing-tool-in-c-brightness-of-an-image/

6

si utilizza la classe ColorMatrix nel codice System.Drawing di applicare trasformazioni di colore in un modo altamente ottimizzato. Effetti come luminosità e contrasto sono direttamente supportati. This web page mostra come dovrebbe apparire la matrice.

5

Per schiarire un'immagine, è possibile applicare un velo bianco sopra:

Bitmap bmp = new Bitmap(@"Image.png"); 
Rectangle r = new Rectangle(0, 0, bmp.Width, bmp.Height); 
alpha = 128 
using (Graphics g = Graphics.FromImage(bmp)) { 
    using (Brush cloud_brush = new SolidBrush(Color.FromArgb(alpha, Color.White))) { 
     g.FillRectangle(cloud_brush, r); 
    } 
} 
bmp.Save(@"Light.png"); 

Il valore alfa può variare da 0 a 255. 0 significa che l'effetto è completamente trasparente risultante nell'immagine originale. 255 significa che l'effetto è completamente opaco risultante in un rettangolo bianco solido. Qui, l'effetto è mostrato con 128.

Lightened Image (Before and After)

Per scurire un'immagine, è possibile applicare un velo nero sopra:

Bitmap bmp = new Bitmap(@"Image.png"); 
Rectangle r = new Rectangle(0, 0, bmp.Width, bmp.Height); 
alpha = 128 
using (Graphics g = Graphics.FromImage(bmp)) { 
    using (Brush cloud_brush = new SolidBrush(Color.FromArgb(alpha, Color.Black))) { 
     g.FillRectangle(cloud_brush, r); 
    } 
} 
bmp.Save(@"Dark.png"); 

Il valore alfa può variare da 0 a 255. 0 significa che l'effetto è completamente trasparente con conseguente immagine originale. 255 significa che l'effetto è completamente opaco risultante in un rettangolo nero pieno. Qui, l'effetto è mostrato con 128.

Darkened Image (Before and After)

Problemi correlati