Imagemagick is a set of command-line utilities for manipulating and viewing images, the most useful of which is probably convert. convert will convert images between different formats and will apply any of a number of image transformations upon request.
Why would you use convert instead of the GIMP or Photoshop? If you're doing something as simple as changing the format of an image, you can avoid the trouble of firing up an image editor. If you're applying the same transformation to many different images (e.g. generating thumbnails), you can script Imagemagick instead of opening up all the files in an image editor. And, of course, if you need to do image manipulation on-the-fly (e.g. for an interactive web site), you'll need something scriptable.
Here's how to convert an image to a different format, say, from a JPEG to a PNG:
convert boston.jpg boston.pngTo do image transformations, specify some number of transformations between the input and the output file names. Here are some of my favorites:
- convert boston.jpg -resize 640x480 boston-small.jpg
- Resizes the image to fit in a 640x480 box while preserving the aspect ratio.
- convert boston.jpg -quality 80 boston-lowres.jpg
- Changes the quality of an image (for JPEG, you can specify any number from 0 [lowest image quality, least space] to 100 [highest image quality, most space]).
- convert logo.png -rotate 10 logo2.png
- Rotates an image by 10 degrees.
- convert logo.png -negate logo2.png
- Negates the colors in an image.
- convert boston.jpg -fx 'luminosity' boston-grayscale.jpg
- Desaturates an image (converts it to grayscale).
You can compound operations by stringing them together:
convert in.jpg -emboss 5 -fx 'luminosity' -rotate 10 out.png
convert has more options than you can shake a stick at: everything from color transformations to special effects and commands to let you draw arbitrary shapes or text on an image. And Imagemagick also provides bindings so you can use it as a library from any of a number of languages.