mercoledì 24 settembre 2025

C# trasformare un’immagine a colori con effetto seppia

C# effetto seppia


In questo esempio di codice in .Net 9 e del linguaggio di programmazione C#, vediamo come trasformare in ambiente Windows Forms, un file immagine a colori, in una nuova immagine con effetto seppia.

Aggiungiamo lo spazio dei nomi per la gestione della grafica. 


C#

using System.Drawing.Imaging;



Di seguito la funzione che permette di applicare l’effetto seppia ad una determinata immagine.


C#

public static void ConvertToSepia(string inputImagePath, string outputImagePath)

{

    try

    {

        //Percorso e nome file immagine originale

        Bitmap ImmagineOriginale = new Bitmap(inputImagePath);

 

        //Nuova immagine di tipo seppia

        Bitmap NuovaImmagineSeppia = new Bitmap(ImmagineOriginale.Width, ImmagineOriginale.Height);

 

        //Effettua un ciclo per i vari pixel

        for (int y = 0; y < ImmagineOriginale.Height; y++)

        {

            for (int x = 0; x < ImmagineOriginale.Width; x++)

            {

                //Rileviamo il colore del pixel

                Color pixelColor = ImmagineOriginale.GetPixel(x, y);

 

                //Calcola i valori RGB per l'effetto seppia

                int r = pixelColor.R;

                int g = pixelColor.G;

                int b = pixelColor.B;

 

                int sepiaR = (int)(0.393 * r + 0.769 * g + 0.189 * b);

                int sepiaG = (int)(0.349 * r + 0.686 * g + 0.168 * b);

                int sepiaB = (int)(0.272 * r + 0.534 * g + 0.131 * b);

 

                // Assicura che i valori RGB siano compresi tra 0 e 255

                sepiaR = Math.Min(sepiaR, 255);

                sepiaG = Math.Min(sepiaG, 255);

                sepiaB = Math.Min(sepiaB, 255);

 

                // Imposta il nuovo colore seppia nel pixel corrispondente

                Color sepiaColor = Color.FromArgb(sepiaR, sepiaG, sepiaB);

                NuovaImmagineSeppia.SetPixel(x, y, sepiaColor);

            }

        }

 

        // Salva il file con i valori di seppia

        NuovaImmagineSeppia.Save(outputImagePath, ImageFormat.Jpeg);

 

        // Libera le risorse

        ImmagineOriginale.Dispose();

        NuovaImmagineSeppia.Dispose();

 

        MessageBox.Show("Nuova immagine creata con successo!");

    }

    catch (Exception ex)

    {

        MessageBox.Show("Errore durante la conversione: " + ex.Message);

    }

}


Di seguito il codice per richiamare la funzione.


C#

private void BtnSeppia_Click(object sender, EventArgs e)

 {

     string immagineOriginale = "C:\\varie\\faro.jpg";

     string nuovaImmagine = "C:\\varie\\faroSeppia.jpg";

     // Chiama la funzione per convertire l'immagine

     ConvertToSepia(immagineOriginale, nuovaImmagine);

 }







Nessun commento: