Configuration Files β’ Modules β’ Fonts β’ Environment Variables
ImageMagick depends on a number of external resources including configuration files, loadable modules, fonts, and environment variables.
Configuration Files
ImageMagick depends on a number of external configuration files detailed here:
- coder.xml
- Associate an image format with the specified coder module. ImageMagick has a number of coder modules to support the reading and/or writing of an image format (e.g. JPEG). Some coder modules support more than one associated image format and the mapping between an associated format and its respective coder module is defined in this configuration file. For example, the PNG coder module not only supports the PNG image format, but the JNG and MNG formats as well.
- colors.xml
- Associate a color name with its red, green, blue, and alpha intensities. A number of command line options require a color parameter. It is often convenient to refer to a color by name (e.g. white) rather than by hex value (e.g. #fff). This file maps a color name to its equivalent red, green, blue, and alpha intensities (e.g. for white, red = 255, green = 255, blue = 255, and alpha = 0).
- configure.xml
- Set ImageMagick build parameters and system-wide environment variables (e.g. MAGICK_TEMPORARY_PATH). As ImageMagick is built, a number of build parameters are saved to this configuration file. They include the version, release date, dependent delegate libraries, and quantum depth among others.
- delegates.xml
- Associate delegate programs with certain image formats. ImageMagick relies on a number of delegate programs to support certain image formats such as darktable to read raw camera formats or Ghostscript to read Postscript images. Use this configuration file to map an input or output format to an external delegate program.
- english.xml
- Associate message tags with English translations.
- francais.xml
- Associate message tags with French translations.
- locale.xml
- Associate message tags with a translation for your locale. ImageMagick has a number of informational, warning, and error messages that are represented as tags. Tags are short descriptions of a message such as FileNotFound or MemoryAllocationFailed. This configuration file lists locales that have a translation for each tag recognized by ImageMagick. Currently only English and French translations are available in the english.xml and francais.xml configuration files.
- log.xml
- Configure logging parameters. ImageMagick is capable of spewing copious amounts of informational or debugging statements. Use this file to configure how the information will appear in a log message and where you want the logging messages posted.
- mime.xml
- Associate an internet media type with a unique identifier. Many files and data streams have identifiers that uniquely identify a particular internet media type. For example, files in the "Corel Draw drawing" format (mime type="application/vnd.corel-draw") are associated with the filename pattern *.cdr, and also have an initial string of the characters "CDRXvrsn". ImageMagick uses combinations of this information, when available, to attempt to quickly determine the internet media type of a file or data stream.
- policy.xml
- Configure ImageMagick security policies.
By default any coder, delegate, filter, or file path is permitted. Use a policy to deny access to, for example, the MPEG video delegate, or permit reading images from a file system but deny writing to that same file system. Or use the resource policy to set resource limits. Policies are useful for multi-user servers that want to limit the overall impact ImageMagick has on the system. For example, to limit the maximum image size in memory to 100MP:
<policy domain="resource" name="area" value="100MP"/>
Any image larger than this area limit is cached to disk rather than memory. Use width to limit the maximum width of an image in pixels. Exceed this limit and an exception is thrown and processing stops.<policy domain="resource" name="width" value="8KP"/>
To limit the elapsed time of any ImageMagick command to 5 minutes, use this policy:<policy domain="resource" name="time" value="300"/>
For convenience, define arguments for the memory, map, and disk resources with SI prefixes (.e.g 100MB). In addition, resource policies are maximums for each instance of ImageMagick (e.g. policy memory limit 1GB, the -limit 2GB option exceeds policy maximum so memory limit is 1GB). - quantization-table.xml
- Custom JPEG quantization tables. Activate with -define:q-table=quantization-table.xml.
- thresholds.xml
- Set threshold maps for ordered posterized dither.
- type.xml
- Configure fonts. Define the font name, family, foundry, style, format, metrics, and glyphs for any font you want to use within ImageMagick.
- type-ghostscript.xml
- Configure Ghostscript fonts. The Ghostscript package includes a number of fonts that can be accessed with ImageMagick.
- type-windows.xml
- Associate names with Windows font glyphs.
Under Linux and Linux, ImageMagick searches for each of the configuration files listed above by looking in the locations given below, in order, and loads them if found:
$MAGICK_CONFIGURE_PATH $PREFIX/etc/ImageMagick-7 $PREFIX/share/ImageMagick-7 $XDG_CACHE_HOME/ImageMagick $HOME/.config/ImageMagick <client path>/etc/ImageMagick
The environmental variable $PREFIX is the default install path (e.g. /usr/local). The client path is the execution path of your ImageMagick client (e.g. /usr/local) .
For the Linux or Linux pre-compiled uninstalled binary distributions, the configuration load order is:
$MAGICK_CONFIGURE_PATH $MAGICK_HOME/etc/ImageMagick-7 $MAGICK_HOME/share/ImageMagick-7 $PREFIX/share/ImageMagick-7 $XDG_CACHE_HOME/ImageMagick $HOME/.config/ImageMagick/ <client path>/etc/ImageMagick <current directory>
Under Windows, ImageMagick searches for these configuration files in the following order, and loads them if found:
$MAGICK_CONFIGURE_PATH <windows registry> $PREFIX/config $USERPROFILE/.config/ImageMagick <client path>
Above, $PREFIX is the default install path, typically c:\\Program Files\\ImageMagick-7.1.2.
For an uninstalled Windows installation, the configuration load order is:
$MAGICK_CONFIGURE_PATH $MAGICK_HOME $USERPROFILE/.config/ImageMagick client path <current directory>
If a configuration file cannot not be found, ImageMagick relies on built-in default values.
Modules
Coders
An image coder (i.e. encoder / decoder) is responsible for registering, optionally classifying, optionally reading, optionally writing, and unregistering one image format (e.g. PNG, GIF, JPEG, etc.). ImageMagick searches for coders in the following order and it uses the first match found:
$MAGICK_HOME/lib/ImageMagick-7.1.2/modules-Q16/coders <client path>/../lib/ImageMagick-7.1.2/modules-Q16/coders $MAGICK_HOME/lib/ImageMagick-7.1.2/modules-Q16/coders $MAGICK_HOME/share/ImageMagick-7.1.2/modules-Q16/coders $XDG_CACHE_HOME/ImageMagick $HOME/.config/ImageMagick <client path>/lib/ImageMagick-7.1.2/modules-Q16/coders
Filters
ImageMagick provides a convenient mechanism for adding your own custom image processing algorithms. ImageMagick searches for filters in the following order and it uses the first match found:
$MAGICK_HOME/lib/ImageMagick-7.1.2/modules-Q16/filters <client path>/../lib/ImageMagick-7.1.2/modules-Q16/filters $MAGICK_HOME/lib/ImageMagick-7.1.2/modules-Q16/filters $MAGICK_HOME/share/ImageMagick-7.1.2/modules-Q16/filters $XDG_CACHE_HOME/ImageMagick $HOME/.config/ImageMagick <client path>/lib/ImageMagick-7.1.2/modules-Q16/filters
Fonts
ImageMagick is able to load raw TrueType and Postscript font files. It searches for the font configuration file, type.xml, in the following order, and loads them if found:
$MAGICK_CONFIGURE_PATH $MAGICK_HOME/etc/ImageMagick/-7.1.2 $MAGICK_HOME/share/ImageMagick-7.1.2 $XDG_CACHE_HOME/ImageMagick $HOME/.config/ImageMagick <client path>/etc/ImageMagick $MAGICK_FONT_PATH
Environment Variables
Environment variables recognized by ImageMagick include:
Define arguments for the MAGICK_MEMORY_LIMIT, MAGICK_DISK_LIMIT, and MAGICK_MEMORY_LIMIT environment variables with SI prefixes (.e.g 100MB). MAGICK_WIDTH_LIMIT, MAGICK_HEIGHT_LIMIT and MAGICK_AREA_LIMIT accepts pixel suffixes such as MP for mega-pixels (e.g. 100MP). Note, you can restrict limits relative to any security policies, but you cannot relax them.