venerdì 25 aprile 2025

C# Creazione di una gif animata tramite .Net ed il componente Magick.NET

articolo creazione di gif con .Net


In questo mini articolo, vedremo come creare una gif animata, ossia un'immagine con azioni in movimento, da più immagini di tipo jpg.

Creazione del progetto

Si crea un nuovo progetto di tipo Windows Application, con l'ultima versione del Framework (nel momento in cui sto scrivendo la versione è la 9) , una volta creato il progetto, posizionare un pulsante nella form ed impostare la proprietà "Name" con il valore "BtnCreaGif". 

Aggiungiamo tramite la finestra Nuget, il riferimento alla libreria denominata "Magick.NET-Q16-AnyCPU", come riportata nella figura precedente.

Aggiungiamo tale componente al progetto.

Terminata la creazione del progetto, non resta che copiare in una cartella due o più immagini di tipo Jpg. Nel nostro esempio la cartella si chiama Immagini e si trova sotto la cartella "Varie".

Stesura del codice

Passiamo in visualizzazione codice, ed in alto sopra ogni dichiarazione dobbiamo aggiungere il riferimento alla librerie Magick.Net.

Di seguito si riporta il frammento di codice dello spazio dei nomi per la libreria aggiunta al progetto.

C#

using ImageMagick;

Torniamo in visualizzazione grafica della nostra form, dov'è presente il pulsante.

Facciamo doppio click sul pulsante della form, in modo da passare in visualizzazione codice nell'evento click del pulsante.

Una volta passati in visualizzazione codice, dobbiamo scrivere le istruzioni per realizzare la gif.

Tramite la classe "MagickImageCollection", si crea un file di tipo gif, caricando una serie di immagini, che verranno formattate tramite la classe "MagickImage" permettendo la generazione di un file immagine di tipo gif tramite il metodo "Write".

 Di seguito si riporta il codice dell'evento click del pulsante, per la creazione della gif, con l'uso delle classi.


C#

private void BtnCreaGif_Click(object sender, EventArgs e)

 {

     string[] immaginiJpg = Directory.GetFiles(@"C:\Varie\Immagini", "*.jpg");

     // Crea un oggetto che contiene tutte le immagini della cartella

     using (var raccoltaImmagini = new MagickImageCollection())

     {

         //Imposto le dimensioni per tutte le immagini

         uint width = 800;

         uint height = 600;

 

 

         foreach (var immagine in immaginiJpg)

         {

             //Creo l'oggetto per la singola immagine

             var image = new MagickImage(immagine);

 

             //Ridimensiono l'immagine

             image.Resize(width, height);

 

             //Aggiungo l’immagine alla raccolta

             raccoltaImmagini.Add(image);

         }

 

         // Imposto il tempo tra le varie immagini (in centesimi di secondo)

         foreach (var image in raccoltaImmagini)

         {

             image.AnimationDelay = 100; // 1 secondo = 100 centesimi di secondo

         }


         //Creo la gif

         raccoltaImmagini.Write(@"C:\Varie\Immagini\nuovaimmagine.gif");

     }

 

     MessageBox.Show("GIF creata con successo!");

}


Conclusioni

L'articolo ha fornito un semplice utilizzo della libreria Magick.Net, che permette di creare gif prendendo due o più file immagini di tipo Jpg. L'esempio molto semplice, ha voluto illustrare le potenzialità di questa libreria gratuita, che fornisce al programmatore un valido strumento per la creazione anche di progetti complessi.

Nessun commento: