lunedì 23 febbraio 2026

C# creare una gif animata di tipo bianco e nero con il componente gratuito ImageMagick

In questo esempio di codice, vedremo come creare una gif animata di colore bianco e nera, tramite il linguaggio di programmazione C# ed il componente gratuito ImageMagick.

Dopo aver aggiunto ad un progetto di tipo "Windows Application", il componente gratuito "ImageMagick", in alto, nella dichiarazione dei namespace, aggiungo il riferimento a questa libreria.

Di seguito il frammento di codice di esempio.


C#

using ImageMagick;


Dopo aver aggiunto un pulsante nella form, facciamo doppio click sul pulsante, in modo da passare in visualizzazione codice dell'evento stesso.


Tramite le classi messe a disposizione di questa libreria, uniamo le immagini presenti in una cartella, impostando le stesse dimensioni, l'effetto bianco e nero, ed il tempo tra un'immagine e l'altra, andremo a creare un file di tipo Gif animata.
Di seguito si riporta il codice di esempio delle suddette operazioni, commentato per chiarezza delle varie operazioni.

C#

private void BtnCreaGif_Click(object sender, EventArgs e)

 {

 

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

 

  //Oggetto che contiene tutte le immagine per realizzare la gif

  using (var raccoltaImmagini = new MagickImageCollection())

  {

      //Imposto le dimensioni per tutte le immagini

      uint width = 800;

      uint height = 600;

      foreach (var immagine in immaginiJpg)

      {

          //Per ogni immagine imposto le dimensioni, l'effetto e l'aggiungo alla raccolta

          var image = new MagickImage(immagine);                  

          image.Resize(width, height);

          //Aggiungo l'effetto griglio

           image.Grayscale();

          // ApplyEffects(image);

          //Aggiungo l'immagine modifica all'oggetto che crea la gif

          raccoltaImmagini.Add(image);

      }

       // Imposto il ritardo tra i fotogrammi (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\nuovaimmagine4.gif");

  }

 

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

}


Nessun commento: