ImageMagick: two fast methods to make a GIF from images
Free software helps you a lot in many fields, even in generating a GIF animation from images. I wan to show you the use of "convert", a command line tools of ImageMagick, can easily solve this task with two awesome methods: one that simply creates a transition between a series of images and another that makes a morphing among them. Let's see how.
ImageMagick is free software to create, edit, compose, or convert bitmap images (in a large variety of formats). It is delivered as a ready-to-run binary distribution or as source code that you may use, copy, modify, and distribute in both open and proprietary applications. It is distributed under a derived Apache 2.0 license. It runs on Linux, Windows, Mac Os X, iOS, Android OS, and other.
It also utilizes multiple computational threads to increase performance and can read, process, or write mega-, giga-, or tera-pixel image sizes. But in this article I will highlight its feature to create an animated GIF starting from a list of images.
A simple animation
In order to create an animation from two images, called dog1.jpg and dog2.jpg, you can launch the following line-command:
convert -resize 200x200 -delay 100 -loop 0 dog1.jpg dog2.jpg animation1.gif
To obtaining this GIF:
Where the animation is called animation1.gif, the delay is set to 100 milliseconds and the loop is limitless.
A morphing animation
To create an animation with a morphing effect, you can launch the following line command:
convert -resize 200x200 dog2.jpg dog1.jpg -delay 20 -morph 10 animation2.gif
To obtaining this GIF:
Where the animation is called animation2.gif, the delay is set to 20 milliseconds and the morph is set to 10 frames between images.
I showed two simple examples, after all ImageMagick supports filename globbing, for example, suppose you want to convert dog1.jpg, dog2.jpg, dog3.jpg, dog4.jpg, and so on in your current directory to a GIF animation. You can conveniently refer to all of the JPEG files with this command:
convert -resize 200x200 *.jpg -delay 20 -morph 10 animation2.gif
Or if you have also different images in JPEG format (i.e. cat1.jpg, cat2.jpg, etc.), it's better this one:
convert -resize 200x200 dog*.jpg -delay 20 -morph 10 animation2.gif
Last but not least, you can set the border color to your GIF, for example yellow in this manner:
convert -resize -border 10x5 -bordercolor "#eeff00" dog*.jpg -delay 10 -morph 10 animation3.gif