Since long, we wished to write about scripting for image creation and manipulation. There are many reason why you would spend some time to do it. To resize a lot of images by hand can be a tedious task, or your software misses a component to achieve a particular result. Or you want to turn a web application into an image editor, etc.
We will start with a modest example taken from a real life situation.
We, Femke and Nicolas, are working on an illustration in Inkscape. For
this illustration, we have scanned a lot of notes we have written on
paper. The scanned images have been saved in tiff. We have imported them
in Inkscape and started making the composition. Half-way we realise that
it should be a lot more easier to work with the same images but saved as
PNG with a transparent background. As there is 165 images to transform,
to do it one by one in Gimp sounds just frightening. This is where the
wonderful Imagemagick
software enters into play.
Imagemagick is shipped with every major linux distribution or can easily
be installed by the different package managers. It is also available on
windows; and on MacosX via the Fink installer. Once there, Imagemagick
gives you many tools to edit, resize, transform images. One of them is
convert that takes a file in input and converts it into (nearly) any
format. In our case, a simple conversion was not enough since we wanted
also to transform the white colour into a transparent background. The
following command did the trick for one image:
convert myfile.tiff -transparent white myfile.png
To apply it to a whole directory of images and keep the filenames, we had to include it in a small shell script:
#!/bin/sh for file in `ls | grep tiff` do convert "$file" -fuzz 5% -transparent white "${: #image158}.png" echo "writing ${: #image158}.png" done
The fuzz parameter makes it possible to give transparency to 'nearly-white' pixels.