In questo esempio di codice nel linguaggio di programmazione C#, vediamo applicare l'effetto bokeh, o meglio una particolare patina scura su un'immagine colore ed una parte dell'immagine che rimane esente da questo effetto.
Utilizzeremo le classi del Framework .Net 9, in particolare quelli presenti nello spazio dei nomi System.Drawing.
Di seguito si riporta il frammento di codice dello spazio dei nomi per la gestione della grafica, da inserire in alto, sopra ad ogni dichiarazione.
C#
using System.Drawing.Imaging;
Nell'evento click di un pulsante, di un progetto di tipo "Windows Application", scriviamo il codice che applica ad un file di tipo jpg l'effetto e crea un nuovo file con questo effetto.
C#
private void BtnEffettoSfocatura2_Click(object sender, EventArgs e)
{
try
{
string immagineOriginale = "C:\\varie\\faro.jpg";
string immagineNuovaSfocatura = "C:\\varie\\faroSfocatura2.jpg";
// Carica l'immagine originale
Bitmap originalImage = new Bitmap(immagineOriginale);
// Crea un'immagine per il risultato
Bitmap bokehImage = new Bitmap(originalImage.Width,
originalImage.Height);
// Crea una maschera per il soggetto
Bitmap mask = new Bitmap(originalImage.Width,
originalImage.Height);
using (Graphics g = Graphics.FromImage(mask))
{
// Disegna un'ellisse bianca per
rappresentare il soggetto
g.FillEllipse(Brushes.White, new Rectangle(100,
100, 200, 200)); //
Modificare le coordinate e le dimensioni secondo necessità
}
// Applica la sfocatura allo sfondo
using (Graphics g = Graphics.FromImage(bokehImage))
{
// Disegna l'immagine originale
g.DrawImage(originalImage,
0, 0);
// Applica un filtro di sfocatura
gaussiana (simulato)
for (int x = 0;
x < bokehImage.Width; x++)
{
for (int y = 0;
y < bokehImage.Height; y++)
{
// Controlla se il pixel è
all'interno della maschera
if (mask.GetPixel(x, y).A == 0) // Se il pixel non è bianco
(trasparente)
{
// Applica la sfocatura
Color originalColor =
originalImage.GetPixel(x, y);
Color blurredColor = Color.FromArgb(originalColor.A,
originalColor.R / 2, originalColor.G / 2, originalColor.B / 2); // Esempio di sfocatura
bokehImage.SetPixel(x, y, blurredColor);
}
}
}
}
// Salva l'immagine
bokehImage.Save(immagineNuovaSfocatura, ImageFormat.Jpeg);
// Libera le risorse
originalImage.Dispose();
bokehImage.Dispose();
mask.Dispose();
Console.WriteLine("Creata immagine con Effetto bokeh");
}
catch (Exception ex)
{
MessageBox.Show("Errore: " +
ex.Message);
}
}

Nessun commento:
Posta un commento