venerdì 26 settembre 2025

C# trasformare un file immagine a colori, con effetto acqua .Net

 

c# effetto acqua


Tramite il linguaggio di programmazione C#, e le classi dello spazio dei nomi System.Drawing, possiamo applicare alcuni effetti alle immagini a colori.

In particolare, in questo frammento di codice, viene illustrata la tecnica per applicare l’effetto acqua, ossia onde, ad un’immagine a colori.


Di seguito si riporta la funzione per genere tale effetto.



C#

public static void effettoAcqua(string inputImagePath, string outputImagePath)

 {

     try

     {

         Bitmap immagineOriginale = new Bitmap(inputImagePath);

         Bitmap immagineEffettoAcqua = new Bitmap(immagineOriginale.Width, immagineOriginale.Height);

 

         // Applica effetto sfocatura

               

         using (Graphics g = Graphics.FromImage(immagineEffettoAcqua))

         {

             g.DrawImage(immagineOriginale, 0, 0, immagineOriginale.Width, immagineOriginale.Height);

                    

         }

 

         // Crea onde sull'immagine

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

         {

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

             {

                 // Calcola la distorsione per l'effetto onde

                 //Modificando il valore viene intensificato l'effetto

                 int offsetX = (int)(10 * Math.Sin(y / 10.0));

                 int newX = x + offsetX;

 

                 if (newX >= 0 && newX < immagineEffettoAcqua.Width)

                 {

                     Color pixelColor = immagineEffettoAcqua.GetPixel(newX, y);

                     immagineEffettoAcqua.SetPixel(x, y, pixelColor);

                 }

             }

         }

 

         //Salvo la nuova immagine

         immagineEffettoAcqua.Save(outputImagePath, ImageFormat.Jpeg);

         //libero la memoria

         immagineOriginale.Dispose();

         immagineEffettoAcqua.Dispose();

 

         MessageBox.Show("Effetto acqua applicato con successo");

     }

     catch (Exception ex)

     {

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

     }

 }



Di seguito il frammento di codice per richiamare la funzione.


C#

private void BtnEffettoAcqua_Click(object sender, EventArgs e)

{

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

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

    //Chiama la funzione per convertire l'immagine con effetto acqua

    effettoAcqua(immagineOriginale, nuovaImmagine);

}


Nessun commento: