domenica 8 marzo 2026

C# comprimere un file immagine in .NET 10 ridurre la dimensione e generare un nuovo file immagine

In questo frammento di codice nel linguaggio di programmazione C#, vedremo come in un progetto di tipo Windows Application, utilizzando le classi del Framework .NET 10, possiamo ridurre le dimensioni, ossia il peso, di un file immagine.
La tecnica riduce anche di molto i megabyte di un file immagine, senza perdere in qualità.

In un progetto di Windows Forms, in alto, sopra ad ogni dichiarazione, inseriamo lo spazio dei nomi per la gestione della grafica, di seguito si riporta il frammento di tale dichiarazione.


C#

using System.Drawing.Drawing2D;

using System.Drawing.Imaging;



Sempre nella classe form, dichiariamo un enum, una serie di valori, che indicheranno il livello di compressione, ossia di riduzione.


C#

public enum QualitaCompressione

{

    Bassa = 20,

    Media = 40,

    Alta = 60,

    Altissima = 80

}



Sempre nella classe della form, si crea una funzione, che ci restituisce un oggetto di tipo ImageCodecInfo, con il quale possiamo gestire la codifica dell'immagine.
Di seguito si riporta il frammento di codice delle suddette operazioni.

C#

private ImageCodecInfo GetEncoder(ImageFormat format)

{

    ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();

    foreach (ImageCodecInfo codec in codecs)

    {

        if (codec.FormatID == format.Guid)

        {

            return codec;

        }

    }

    return null;

}



Sempre nella form, scriviamo una funzione, che verrà richiamata dall'evento click di un pulsante, per ridurre l'immagine che viene passata, e crearne una nuova con la riduzione dei megabyte.
Di seguito si riporta il frammento di codice delle suddette operazioni.

C#

public   void Comprimi(string filePath, string filePathCompresso, QualitaCompressione qualita)

 {

     //Oggetto dell'immagine da ridurre le dimensioni

     Image immagine = Image.FromFile(filePath);

 

     //Nuova immagine compressa

     using (FileStream fs = new FileStream(filePathCompresso, FileMode.Create))

     {

         //Oggetto encoder per l'immagine

         ImageCodecInfo encoder = GetEncoder(ImageFormat.Jpeg);

 

         //Imposto i parametri di compressione

         EncoderParameters ep = new EncoderParameters(1);

         ep.Param[0] = new EncoderParameter(Encoder.Quality, (int)qualita);

 

         //Salvo la nuova Immagine

         immagine.Save(fs, encoder, ep);

     }

 

     immagine.Dispose();

 }


Nell'evento click di un pulsante si richiama la funzione appena creata, passando il percorso e nome del file da comprimere, il percorso e nome del nuovo file che verrà ridotta la dimensione, e la qualità di comprensione.
Di seguito si riporta il codice delle suddette operazioni.

C#

private void btnComprimere_Click(object sender, EventArgs e)

 {

     string filePath = @"C:\varie\bicicletta.jpg";

     string filePathCompresso = @"C:\varie\bicicletta_compresso.jpg";

 

    Comprimi(filePath, filePathCompresso, QualitaCompressione.Media);

 

 }

Nessun commento: