[
About ImageMagick
Command-line Tools
Processing
Options
Program Interfaces
MagickWand
MagickCore
PerlMagick
Architecture
] [ Install from Source Unix Windows Binary Releases Unix Windows Resources ] [ Download ] [ Links ] [ Sponsors Solutions for e- and m-commerce ] |
The ImageMagick command line can be as simple as convert image.jpg image.png or as complex as convert label.gif +matte \ \( +clone -shade 110x90 -normalize -negate +clone -compose Plus -composite \) \ \( -clone 0 -shade 110x50 -normalize -channel BG -fx 0 +channel -matte \) \ -delete 0 +swap -compose Multiply -composite button.gif Without knowing much about the ImageMagick command line, you can probably figure out that the first command converts an image in the JPEG format to one in the PNG format. However, very few may realize the second, more complex command, gives a flat two-dimensional label a three-dimensional look with rich textures and simulated depth: In the next sections we dissect the anatomy of the ImageMagick command line. Hopefully, after carefully reading and better understanding how the command line works, you should be able to accomplish complex image-processing tasks without resorting to the sometimes daunting program interfaces. The ImageMagick command line consists of
You can find a detailed explanation of each of the constituent parts of the command line in the sections that follow. ImageMagick extends the concept of an input filename to include: 1) filename globbing; 2) an explicit image format; 3) using built-in images and patterns; 4) reading an image from standard in; 5) selecting certain frames from an image; and 6) selecting a region of an image. Each of these extensions are explained in the next few paragraphs.
convert *.jpg images.gif convert -size 640x480 -depth 8 rgb:image image.png convert -size 640x480 pattern:checkerboard checkerboard.png convert logo: gif:- | display gif:- convert images.gif[0] image.png convert 'images.gif[0]' image.png convert 'images.gif[0-4]' images.mng convert 'images.gif[3,2,4]' images.mng convert -size 6000x4000 -depth 8 'rgb:image[600x400+1900+2900]' image.jpg convert -size 6000x4000 -depth 8 -extract 600x400+1900+2900 rgb:image image.jpg convert '*.jpg' -resize 120x120 thumbnail%03d.png convert '*.jpg[120x120]' thumbnail%03d.png An image setting persists as it appears on the command line and may affect subsequent processing such as reading an image, an image operator, or when writing an image as appropriate. An image setting stays in effect until it is reset or the command line terminates. The image settings include:
In this example, –channel applies to each of the images since as we mentioned, settings persist: convert -channel RGB wand.png wizard.png images.png An image operator differs from a setting in that it affects the image immediately as it appears on the command line. An operator is any command line option not listed as a image setting or image sequence operator. Unlike an image setting, which persists until the command line terminates, an operator is applied to an image and forgotten. Choose from these image operators:
In this example, –negate negates the wand image but not the wizard: convert wand.png -negate wizard.png images.png An image sequence operator differs from a setting in that it affects an image sequence immediately as it appears on the command line. Choose from these image sequence operators:
In school, your teacher probably permitted you to work on problems on a scrap of paper and then copy the results to your test paper. An image stack is similiar. It permits you to work on an image or image sequence in isolation and then introduce the results back into the command line. The image stack is delineated with parenthesis. Image operators only affect images in the current stack. For example, we can limit the image rotation to just the wizard image like this: convert wand.gif \( wizard.gif -rotate 30 \) +append images.gif Notice the parenthesis are escaped. That is there are preceded by a backslash. This is required under Unix since parenthesis are special shell characters. The backslash tells the shell not to interpret these characters and pass them to the ImageMagick command line. In addition to the image operators already discussed, these image operators are most useful when processing images in an image stack: The arguments to these operators are indexes into the image sequence by number, starting with zero, for the first image, and so on. However if you give a negative index, the images are indexed from the end (last image added). That is a index of -1 is the last image in the current image sequence, -2 for the second last and so on. ImageMagick extends the concept of an output filename to include: 1) an explicit image format; 2) writing to standard out; and 3) specifying a TIFF tile size. Each of these extensions are explained in the next few paragraphs.
convert image.jpg rgb:image convert logo: gif:- | display gif:- convert wizard.png wizard.tif[64x64] convert wizard.png 'wizard.tif[64x64]' |