In questo frammento di codice del linguaggio di programmazione C#, vedremo come creare una nuova immagine da una esistente, con l'effetto per metà a colori e per l'altra metà in bianco e nero.
Utilizzeremo l'ultima versione del Framework .Net 9, nel momento in cui si sta scrivendo.
Tramite lo spazio dei nomi "System.Drawing" utilizzando le varie classi, applicheremo l'effetto grafico come mostrato nella figura precedente.
In visualizzazione codice, aggiungiamo lo spazio dei nomi per la gestione della grafica, in alto, sopra ad ogni dichiarazione, aggiungiamo lo spazio dei nomi Systema.Drawing, il tutto come mostrato qui di seguito.
C#
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
Nell'evento click di un pulsante nella form, aggiungiamo il seguente codice, che rileva dall'immagine originale, i vari pixel, e verifica se è la parte grafica si trova nella prima metà oppure nella seconda, in caso della seconda metà, applica il colore della scala dei colori grigi .
Di seguito il frammento di codice delle suddette operazioni.
C#
private void BtnColoriBiancoNero_Click(object sender, EventArgs e)
{
string percorsoNomeFileOriginale = "C:\\varie\\uccelli.jpg";
string percorsoNomeNuovoFile = "C:\\varie\\uccelliColoriBiancoNero.jpg";
try
{
// Carica l'immagine originale
Bitmap bmpOriginale = new Bitmap(percorsoNomeFileOriginale);
int width = bmpOriginale.Width;
int height = bmpOriginale.Height;
//Nuova immagine
Bitmap bmpNuovaImmagine = new Bitmap(width, height);
// Elabora i pixel
for (int x = 0; x < width; x++)
{
for (int y = 0; y < height; y++)
{
Color pixelColor = bmpOriginale.GetPixel(x, y);
if (x < width / 2) // Metà sinistra a colori
{
bmpNuovaImmagine.SetPixel(x, y, pixelColor);
}
else // Metà destra in bianco e nero
{
int grayValue = (int)(pixelColor.R * 0.3 + pixelColor.G * 0.59 + pixelColor.B * 0.11);
Color grayColor = Color.FromArgb(grayValue, grayValue, grayValue);
bmpNuovaImmagine.SetPixel(x, y, grayColor);
}
}
}
//Salvo Nuova Immagine
bmpNuovaImmagine.Save(percorsoNomeNuovoFile);
// Rilascia le risorse
bmpOriginale.Dispose();
bmpNuovaImmagine.Dispose();
MessageBox.Show("Immagine creata con successo!");
}
catch (System.Exception ex)
{
MessageBox.Show("Errore: " + ex.Message);
}
}

Le opere pubblicate in questo blog sono sotto la licenza Creative Commons. Attribuzione- No commerciale e no derivate.
Nessun commento:
Posta un commento