ImageMagick is the CLI graphics package for UNIX and can do amazing stuff in the right hands. I’ve been using it since, like… forever.
Useful Techniques
The following are some tricks I’ve learned over the years and that I tend to (re)use now and again.
Doing Perspective Transforms
During a recent project, I had to assemble a presentation with browser screenshots arranged in a perspective view, and it was too time-consuming to use a standard image editor and manually go through each image. So I decided to figure out a way to do it automatically at the nearest possible opportunity, and here it is. The easiest way for me is to use control points for an initial image. Here is a reasonably nice looking perspective for an (aprox.) 1280×720 image:
convert -verbose ScreenShot.png -matte -virtual-pixel transparent \
-distort Perspective '0,0,110,100 0,720,100,600 1280,0,1080,0 1280,720,1060,720' \
output.png
Which yields a pretty nice-looking effect for dropping into a presentation (the end result has a transparent background – see the next section for how to convert it properly into a JPEG):
You can then use the -verbose
output for subsequent images of varying sizes, with minor adjustments.
Converting transparent PNG to JPEG and setting a background colour
One of the stupidest tricks ever:
convert -scale 480 -quality 80 screenshot.png -strip -interlace Plane -bordercolor white -border 0x0 Image1.jpg
The -strip -interlace Plane
above results in a smaller progressive JPEG, which may be of interest in many cases.
Batch Resizing and Cropping
Here’s a little Makefile
for batch processing photos for the Vodafone 520 photoframe, which has an 800×480 LCD. If you have 6.3.8 or above, use 800x480^
as the resize specifier for best results on the center crop:
OPTS=-resize 800 -gravity Center -crop 800x480+0+0 -quality 100
SOURCES=$(wildcard Source/*.jpg)
JPEG=$(foreach file,$(SOURCES),$(subst Source/,Final/,$(file)))
all: jpeg
Final/%.jpg: Source/%.jpg
convert $(OPTS) $^ $@
jpeg: $(JPEG)
clean:
rm -f $(JPEG)
Other Resources
- Fred’s ImageMagick Scripts – a wide variety of useful recipes
- Graphics Lab Examples for Version 6
- Graphics Lab Examples for Version 5