ImageMagick-3.7 README

"I swear by my life and my love of it that I will never live for the sake of another man, nor ask another man to live for mine."

John Galt in Atlas Shrugged, by Ayn Rand


The author is This software is NOT shareware. However, I am interested in who might be using it. Please consider sending me a picture postcard of the area where you live. Send postcards to

      John Cristy
      5 Middleton Lane
      Landenberg, PA  19350


ImageMagick, version 3.7, is available on . I want ImageMagick to be of high quality, so if you encounter a problem I will investigate. However, be sure you are using the most recent version from, or a mirror site, before submitting any bug reports or suggestions.


The official ImageMagick WWW page is at Another useful ImageMagick WWW page is The Imaging Machine

To use display as your external image viewer, edit the global mailcap file or your personal mailcap file .mailcap (located in your home directory) and put this entry:
      image/*; display %s

UNIX Compilation

      gunzip ImageMagick-3.6.5.tar.gz
      tar xvf ImageMagick-3.6.5.tar
      cd ImageMagick

You might want to check the values of certain program definitions before compiling. Change the definitions of ApplicationDefaults, DocumentationBrowser, EditorCommand, PostscriptColorDevice, PrintCommand, and RGBColorDatabase in magick/magick.h to suit your local requirements. Next, type.

      make Makefiles
      make depend
      make -k
If that fails, try
      cd magick
      make -k
      cd ..
      make -k

If you do not have gunzip(1), it is available on If you do not have xmkmf(1), or if xmkmf(1) fails to produce usable Makefiles, type
If you use gcc and get a link error, recompile with the option -fPIC. Dec Alpha users might need to compile magick/X.c with -O1 due to an optimizer bug in gcc. Change ReadBinaryType to "r" and WriteBinaryType to "w" in magick/magick.h for FreeBSD.

Finally type:
      display images/aquarium.miff
      display -monochrome -dither images/aquarium.miff
The aquarium and other images are available from anonymous FTP at If the image colors are not correct use this command
      display -visual default images/aquarium.miff
You can find other example images in the images directory.

For additional information, see the manual pages for these ImageMagick utilities

Also read the ImageMagick Frequently Asked Questions This is a required reading. Most of the questions I get via electronic mail are answered in this document.

Place display X application defaults in /usr/lib/X11/app-defaults/Display. Use the appropriate name for other clients (e.g. Animate, Montage, etc).

The ImageMagick utilities read and write MIFF images. Refer to the end of this message for more information about MIFF. Use convert to convert images to and from the MIFF format.

ImageMagick utilities recognizes these image formats:

* AVS - AVS X image file.
* BMP - Microsoft Windows bitmap image file.
* CMYK - Raw cyan, magenta, yellow, and blick bytes.
* EPS - Adobe Encapsulated PostScript file.
* EPSF - Adobe Encapsulated PostScript file.
* EPSI - Adobe Encapsulated PostScript Interchange format.
* FAX - Group 3.
* FITS - Flexible Image Transport System.
* GIF - Compuserve Graphics image file.
* GIF87 - Compuserve Graphics image file (version 87a).
* GRAY - Raw gray bytes.
* HDF - Hierarchical Data Format.
* JPEG - Joint Photographic Experts Group file interchange format.
* MAP - colormap intensities and indices.
* MATTE - Raw matte bytes.
* MIFF - Magick image file format.
* MTV -
* NULL - NULL image.
* PCD - Photo CD.
* PCX - ZSoft IBM PC Paintbrush file.
* PDF - Portable Document Format.
* PICT - Apple Macintosh QuickDraw/PICT file.
* PNG - Portable Network Graphics.
* PNM - Portable bitmap.
* PS - Adobe PostScript file.
* PS2 - Adobe Level II PostScript file.
* RAD - Radiance image file.
* RGB - Raw red, green, and blue bytes.
* RGBA - Raw red, green, blue, and matte bytes.
* RLE - Utah Run length encoded image file; read only.
* SGI - Irix RGB image file.
* SUN - SUN Rasterfile.
* TEXT - raw text file; read only.
* TGA - Truevision Targa image file.
* TIFF - Tagged Image File Format.
* TILE - tile image with a texture.
* VICAR - read only.
* VID - Visual Image Directory.
* VIFF - Khoros Visualization image file.
* X - select image from X server screen.
* XC - constant image of X server color.
* XBM - X11 bitmap file.
* XPM - X11 pixmap file.
* XWD - X Window System window dump image file.
* YUV - CCIR 601 1:1:1 file.
* YUV3 - CCIR 601 2:1:1 files.

and for your convenience automatically converts most of these alien image format to MIFF at execution time. However, the MIFF image format has several advantages over most image formats (i.e. runlength encoding, visual image directories, digital signature on an image colormap, etc.). ImageMagick is designed to exploit these advantages. Whenever possible convert an alien image format to the MIFF format before using the various ImageMagick programs.

Other formats may also be recognized. See convert for a list of valid image formats. You can specify a particular image format by prefixing the image filename with the image type and a colon (i.e. ps:image).

Extra Programs and Libraries

To further enhance the capabilities of ImageMagick, you may want to get these programs or libraries:

Background Texture

ImageMagick requires a background texture for the TILE format and for the -texture option of montage. You can use your own or get samples or get additional samples from KPT.


ImageMagick requires get to read images specified with a World Wide Web (WWW) uniform resource locator (URL). Get(1) must be in /usr/local/bin. See WWWcommand in magick/image.h to change its location. Note: do not confuse this get program with SCCS get program. If you do not have a HTTP server, you can use xtp, available in the ImageMagick distribution, for URL's whose protocol is FTP.


ImageMagick requires the NCSA HDF library to read and write the HDF image format.


ImageMagick requires the JBIG-Kit software to read and write the JBIG image format.


ImageMagick requires the Independent JPEG Group's software to read and write the JPEG image format. ImageMagick creates progressive JPEG images by default. Use the -interlace none option to create non-progressive images , or undef C_PROGRESSIVE_SUPPORTED in jmorecfg.h before you compile the library, or use JPEG version 5B.

Concerning iterative JPEG compression: see Kinoshita and Yamamuro, Journal of Imaging Science and Technology, Image Quaility with Reiterative JPEG Compression, Volume 39, Number 4, July 1995, 306-312 who claim that (1) the iterative factor of the repetitive JPEG operation had no influence on image quality, and (2) the first compression determined base image quality.


ImageMagick requires the MPEG library to read the MPEG image format.


ImageMagick requires picttoppm to read Macintosh PICT images.


ImageMagick requires GNU's Ghostscript software to read the PostScript or the Portable Document format. It is also required to annotate an image when an X server is not available. Note, Ghostscript must support the ppmraw device (type gs -h to verify). If Ghostscript is unavailable, the Display Postscript extension is used to rasterize a Postscript document (assuming you define HasDPS). The DPS extension is less robust than Ghostscript in that it will only rasterize one page of a multi-page document.


ImageMagick requires the PNG library to read the PNG image format. See Portable Network Graphics for more details.


ImageMagick requires ra_ppm from Greg Ward's Radiance software to read the Radiance image format.


ImageMagick requires rawtorle from the Utah Raster Toolkit to write the RLE image format.


ImageMagick requires Sam Leffler's TIFF software to read and write the TIFF image format.


ImageMagick requires Arnaud Le Hors XPM software to read the XPM image format.


ImageMagick requires the ZLIB library to read the PNG image format or read or write ZLIB compressed MIFF images.

How to Compile

To display images in the HDF, JPEG, MPEG, PNG, TIFF, or XPM format, get the HDF, JPEG, MPEG, PNG, TIFF, or XPM archives and build ImageMagick as follows:


      cd ImageMagick
      mkdir hdf
      cd hdf
      zcat HDF3.3r4.tar.Z | tar xvf -
      cp HDF3.3r4/hdf/src/* .
        edit Makefile; define machine type; for Solaris 2.?
        comment out memory.h in hdf/hdfi.h
      make libnofortran
      cd ..


      cd ImageMagick
      gunzip -c jbigkit-0.7.tar.gz | tar xvof -
      mv jbig-kit jbig
      cd jbig
      cd ..


      cd ImageMagick
      gunzip -c jpegsrc.v6.tar.gz | tar xvof -
      mv jpeg-6 jpeg
      cd jpeg
      configure CC=cc -with-maxmem=7
      cd ..


      cd ImageMagick
      mkdir mpeg
      cd mpeg
      gunzip -c mpeg_lib-1.1.tar.gz | tar xvof -
      mv mpeg_lib/* .
        edit Makefile as instructed; for Solaris use the
        BSD-compatibility libraries or replace bzero with a call to
      cd ..


      cd ImageMagick
      gunzip -c zlib-0.95.tar.gz | tar xvf -
      cd zlib
      cd ..
      mkdir png
      cd png
      gunzip -c libpng-0.81.tar.gz | tar xvf -
      cd ..


      cd ImageMagick
      gunzip -c tiff-v3.4beta024.src.tar.Z | tar xvof -
      mv tiff-v3.4beta018 tiff
      cd tiff
      cd ..


      cd ImageMagick
      gunzip -c xpm-3.4g.tar.gz | tar xvof -
      mv xpm-3.4g xpm
      cd xpm
      make Makefiles
      cd ..

If your computer system supports shared libraries you must type
      make install
If you do not have root privileges, type this instead
      rm libXpm*
      make -f Makefile.noX
Finally, perform the following:
      cd ImageMagick
      edit Magick.tmpl and define Has???? as instructed
      make Makefiles
      make clean
If you do not have xmkmf, try
      edit and define Has???? as instructed
      make clean
      make -k
You can now display images in the HDF, JBIG, JPEG, MPEG, PNG, TIFF, or XPM format.

If you have HDF, JBIG, JPEG, MPEG, PNG, TIFF, and XPM sources installed as directed above, you can also type
      Install sun
Substitute the appropriate machine type (aix, hpux, sgi, etc).

VMS Compilation

You might want to check the values of certain program definitions before compiling. Change the definitions of ApplicationDefaults, DocumentationBrowser, EditorCommand, PostscriptColorDevice, PrintCommand, and RGBColorDatabase in magick/magick.h to suit your local requirements. Next, type.

      set display/create/node=node_name::
where node_name is the DECNET X server to contact.

Finally type:
      display [.images]aquarium.miff
      display -monochrome -dither [.images]aquarium.miff
Alternatively, get a zipped distribution (with JPEG, MPEG, TIFF, and XPM) from

The VMS JPEG, TIFF, and XPM source libraries are available on in [anonymous.decwindows.lib].

Thanks to for supplying invaluable help as well as the VMS versions of the JPEG, MPEG, TIFF, and XPM libraries.


An example animation sequence is available from Or alternatively, you can create this sequence yourself. Just look at README in the scenes directory.

To prevent color flashing on visuals that have colormaps, animate(1) creates a single colormap from the image sequence. This can be rather time consuming. You can speed this operation up by reducing the colors in the image before you animate them. Use mogrify to color reduce the images:
      mogrify -colors 256 scenes/dna.[0-9]*
Note, the image sequence in ImageMagick.animation.tar.gz is already reduced. Alternatively, you can use a Standard Colormap; or a static, direct, or true color visual. You can define a Standard Colormap with xstdcmap(1). For example, to use the "best" Standard Colormap, type:
      xstdcmap -best
      animate -map best scenes/dna.[0-9]*
or to use a true color visual:
      animate -visual truecolor scenes/dna.[0-9]*
Image filenames can appear in any order on the command line if the scene keyword is specified in the MIFF image. Otherwise the images display in the order they appear on the command line. A scene is specified when converting from another image format to MIFF by using the "scene" option with any filter. Be sure to choose a scene number other than zero. For example, to convert a TIFF image to a MIFF image as scene #2, type:
      convert -scene 2 image.tiff image.miff

16-BIT Imaging

By default, ImageMagick uses a color depth of 8 bits (e.g. [0..255]). Any 16-bit image is scaled immediately to 8-bits before any image viewing or processing occurs. If you want to work directly with 16-bit images (e.g. [0..65535]), edit Magick.tmpl or and define QuantumLeap as instructed in the respective file. Next type

    make clean

In 16-bit mode expect to use about 1/3 more memory on the average. Also expect some processing to be slower than in 8-bit mode (e.g. Oil Painting, Segment, etc).

In general, 16-bit mode is only useful if you have 16-bit images that you want to manipulate and save the transformed image back to a 16-bit image format (e.g. PNG, VIFF).

MIFF Image Format

MIFF is an image format which I developed. I like it because

  1. It is machine independent. It can be read on virtually any computer. No byte swapping is necessary.

  2. It has a text header. Most image formats are coded in binary and you cannot easily tell attributes about the image. Use more(1) on MIFF image files and the attributes are displayed in text form.

  3. It can handle runlength-encoded images. Although most scanned images do not benefit from runlength-encoding, most computer-generated images do. Images of mostly uniform colors have a high compression ratio and therefore take up less memory and disk space.

  4. It allows a scene number to be specified. This allows you to specify an animation sequence out-of-order on the command line. The correct order is determined by the scene number of each image.

  5. MIFF computes a digital signature for colormapped images. This is useful for animating a sequence of images on a colormapped X server. If all signatures match in the image sequence, computing a global colormap is not necessary.

  6. There is a montage keyword allowing an image to act as a visual image directory. See display(1) for more details.

One way to get an image into MIFF format is to use convert or read it from an X window using the import program. Alternatively, type the necessary header information in a file with a text editor. Next, dump the binary bytes into another file. Finally, type
      cat header binary_image | display -write image.miff -
For example, suppose you have a raw red, green, blue image file on disk that is 640 by 480. The header file would look like this:
      id=ImageMagick columns=640 rows=480 :
The image file would have red, green, blue tuples (rgbrgbrgb...). Refer to the display manual page for more details.


Copyright 1995 E. I. du Pont de Nemours and Company Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of E. I. du Pont de Nemours and Company not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. E. I. du Pont de Nemours and Company makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.

E. I. du Pont de Nemours and Company disclaims all warranties with regard to this software, including all implied warranties of merchantability and fitness, in no event shall E. I. du Pont de Nemours and Company be liable for any special, indirect or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortuous action, arising out of or in connection with the use or performance of this software.

[home page]