



<!DOCTYPE html>
<html lang="en">
<head>
  <meta name="google-site-verification" content="_bMOCDpkx9ZAzBwb2kF3PRHbfUUdFj2uO8Jd1AXArz4" />
    <title>ImageMagick: Resources</title>
  <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
  <meta name="application-name" content="ImageMagick"/>
  <meta name="description" content="ImageMagick® is a software suite to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 200) including PNG, JPEG, JPEG-2000, GIF, WebP, Postscript, PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves."/>
  <meta name="application-url" content="http://www.imagemagick.org"/>
  <meta name="generator" content="PHP"/>
  <meta name="keywords" content="resources, ImageMagick, PerlMagick, image processing, image, photo, software, Magick++, OpenMP, convert"/>
  <meta name="rating" content="GENERAL"/>
  <meta name="robots" content="INDEX, FOLLOW"/>
  <meta name="generator" content="ImageMagick Studio LLC"/>
  <meta name="author" content="ImageMagick Studio LLC"/>
  <meta name="revisit-after" content="2 DAYS"/>
  <meta name="resource-type" content="document"/>
  <meta name="copyright" content="Copyright (c) 1999-2015 ImageMagick Studio LLC"/>
  <meta name="distribution" content="Global"/>
  <meta name="magick-serial" content="P131-S030410-R485315270133-P82224-A6668-G1245-1"/>
  <link rel="icon" href="../images/wand.png"/>
  <link rel="shortcut icon" href="../images/wand.ico"/>
  <link rel="stylesheet" href="css/magick.css"/>
</head>
<body>
<div class="main">
<div class="magick-masthead">
  <div class="container">
    <script async="async" src="http://localhost/pagead/js/adsbygoogle.js"></script>    <ins class="adsbygoogle"
         style="display:block"
         data-ad-client="ca-pub-3129977114552745"
         data-ad-slot="6345125851"
         data-ad-format="auto"></ins>
    <script>
      (adsbygoogle = window.adsbygoogle || []).push({});
    </script>
    <nav class="magick-nav">
      <a class="magick-nav-item " href="../index.html">Home</a>
      <a class="magick-nav-item " href="binary-releases.html">Download</a>
      <a class="magick-nav-item " href="command-line-tools.html">Tools</a>
      <a class="magick-nav-item " href="command-line-processing.html">Command-line</a>
      <a class="magick-nav-item active" href="resources.html">Resources</a>
      <a class="magick-nav-item " href="api.html">Develop</a>
      <a class="magick-nav-item " href="http://nextgen.imagemagick.org/script/search.php">Search</a>
      <a class="magick-nav-item pull-right" href="https://www.imagemagick.org/discourse-server/">Community</a>
    </nav>
  </div>
</div>
<div class="container">
<div class="magick-header">
<p class="text-center"><a href="resources.html#configure">Configuration Files</a> • <a href="resources.html#modules">Modules</a> • <a href="resources.html#fonts">Fonts</a> • <a href="resources.html#environment">Environment Variables</a></p>

<p class="lead magick-description">ImageMagick depends on a number of external resources including configuration files, loadable modules, fonts, and environment variables.</p>

<h2 class="magick-header"><a id="configure"></a>Configuration Files</h2>

<p>ImageMagick depends on a number of external configuration files detailed here:</p>

<dl class="dl-horizontal">
<dt><a href="../source/coder.xml">coder.xml</a></dt>
  <dd>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.
  </dd>

<dt><a href="../source/colors.xml">colors.xml</a></dt>
  <dd>Associate a color name with its red, green, blue, and alpha intensities.

  A number of command line options require a <a href="color.html">color parameter</a>.  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).
  </dd>

<dt><a id="configure.xml"/><a href="../source/configure.xml">configure.xml</a></dt>
  <dd>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.
  </dd>

<dt><a href="../source/delegates.xml">delegates.xml</a></dt>
  <dd>Associate delegate programs with certain image formats.

  ImageMagick relies on a number of delegate programs to support certain image formats such as <a href="http://ufraw.sourceforge.net/">ufraw-batch</a> to read raw camera formats or <a href="http://www.cs.wisc.edu/~ghost/">Ghostscript</a> to read Postscript images.  Use this configuration file to map an input or output format to an external delegate program.
  </dd>

<dt><a href="../source/english.xml">english.xml</a></dt>
  <dd>Associate message tags with English translations.</dd>

<dt><a href="../source/francais.xml">francais.xml</a></dt>
  <dd>Associate message tags with French translations.  </dd>

<dt><a href="../source/locale.xml">locale.xml</a></dt>
  <dd>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
  <var>FileNotFound</var> or <var>MemoryAllocationFailed</var>.  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 <code>english.xml</code> and <code>francais.xml</code> configuration files.
  </dd>

<dt><a href="../source/log.xml">log.xml</a></dt>
  <dd>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.
  </dd>

<dt><a href="../source/magic.xml">magic.xml</a></dt>
  <dd>Associate an image format with a unique identifier.
  Many image formats have identifiers that uniquely identify a particular image format.  For example, the GIF image format always begins with <code>GIF8</code> as the first 4 characters of the image.  ImageMagick uses this information to quickly determine the type of image it is dealing with when it reads an image.
  </dd>

<dt><a href="../source/mime.xml">mime.xml</a></dt>
  <dd>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 <code>*.cdr</code>, 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.
</dd>

<dt><a href="../source/policy.xml">policy.xml</a></dt>
  <dd>Configure ImageMagick 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 100MB:

<pre>
&lt;policy domain="resource" name="area" value="100MB"/>
</pre>

Any image larger than this area limit is cached to disk rather than memory.

Use <code>width</code> to limit the maximum width of an image in pixels.  Exceed this limit and an exception is thrown and processing stops.

<pre>
&lt;policy domain="resource" name="width" value="100MP"/>
</pre>

To limit the elapsed time of any ImageMagick command to 5 minutes, use this policy:

<pre>
&lt;policy domain="resource" name="time" value="300"/>
</pre>
Define arguments for the memory, map, area, 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 <code>-limit 2GB</code> option exceeds policy maximum so memory limit is 1GB). </dd>

<dt><a href="../source/quantization-table.xml">quantization-table.xml</a></dt>
  <dd>Custom JPEG quantization tables. Activate with <code>-define:q-table=quantization-table.xml</code>.</dd>

<dt><a href="../source/thresholds.xml">thresholds.xml</a></dt>
  <dd>Set threshold maps for ordered posterized dither.</dd>

<dt><a id="type.xml"></a><a href="../source/type.xml">type.xml</a></dt>
  <dd>Configure fonts.
  Define the font name, family, foundry, style, format, metrics, and glyphs for any font you want to use within ImageMagick.
  </dd>

<dt><a href="../source/type-ghostscript.xml">type-ghostscript.xml</a></dt>
  <dd>Configure <a href="http://www.cs.wisc.edu/~ghost/">Ghostscript</a> fonts.
  The Ghostscript package includes a number of <a href="https://sourceforge.net/projects/gs-fonts/">fonts</a> that can be accessed with ImageMagick.
  </dd>

<dt><a href="../source/type-windows.xml">type-windows.xml</a></dt>
  <dd>Associate names with Windows font glyphs.</dd>
</dl>

<p>Under Unix 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:</p>

<pre>
$MAGICK_CONFIGURE_PATH
$PREFIX/etc/ImageMagick-7 
$PREFIX/share/ImageMagick-7 
$XDG_CACHE_HOME/ImageMagick
$HOME/.config/ImageMagick
&lt;<var>client path</var>&gt;/etc/ImageMagick
</pre>

<p>The environmental variable $PREFIX is the default install path (e.g. <code>/usr/local</code>). The <var>client path</var> is the execution path of your ImageMagick client (e.g. <code>/usr/local</code>) .</p>

<p>For the Unix or Linux pre-compiled uninstalled binary distributions, the configuration load order is:</p>

<pre>
$MAGICK_CONFIGURE_PATH
$MAGICK_HOME/etc/ImageMagick-7 
$MAGICK_HOME/share/ImageMagick-7 
$PREFIX/share/ImageMagick-7 
$XDG_CACHE_HOME/ImageMagick
$HOME/.config/ImageMagick/
&lt;<var>client path</var>&gt;/etc/ImageMagick
&lt;<var>current directory</var>&gt;
</pre>

<p>Under Windows, ImageMagick searches for these configuration files in the following order, and loads them if found:</p>

<pre>
$MAGICK_CONFIGURE_PATH
&lt;<var>windows registry</var>&gt;
$PREFIX/config
$USERPROFILE/.config/ImageMagick
&lt;<var>client path</var>&gt;
</pre>

<p>Above, $PREFIX is the default install path, typically <code>c:\\Program Files\\ImageMagick-7.0.0</code>.</p>

<p>For an uninstalled Windows installation, the configuration load order is:</p>

<pre>
$MAGICK_CONFIGURE_PATH
$MAGICK_HOME
$USERPROFILE/.config/ImageMagick
<var>client path</var>
&lt;<var>current directory</var>&gt;
</pre>

<p>If a configuration file cannot not be found, ImageMagick relies on built-in default values.</p>

<h2 class="magick-header"><a id="modules"></a>Modules</h2>

<h4>Coders</h4>
<p>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:</p>

<pre>
$MAGICK_HOME/lib/ImageMagick-7.0.0/modules-Q16/coders
&lt;<var>client path</var>&gt;/../lib/ImageMagick-7.0.0/modules-Q16/coders
$MAGICK_HOME/lib/ImageMagick-7.0.0/modules-Q16/coders
$MAGICK_HOME/share/ImageMagick-7.0.0/modules-Q16/coders
$XDG_CACHE_HOME/ImageMagick
$HOME/.config/ImageMagick
&lt;<var>client path</var>&gt;/lib/ImageMagick-7.0.0/modules-Q16/coders
</pre>

<h4>Filters</h4>
<p>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:</p>
<pre>
$MAGICK_HOME/lib/ImageMagick-7.0.0/modules-Q16/filters
&lt;<var>client path</var>&gt;/../lib/ImageMagick-7.0.0/modules-Q16/filters
$MAGICK_HOME/lib/ImageMagick-7.0.0/modules-Q16/filters
$MAGICK_HOME/share/ImageMagick-7.0.0/modules-Q16/filters
$XDG_CACHE_HOME/ImageMagick
$HOME/.config/ImageMagick
&lt;<var>client path</var>&gt;/lib/ImageMagick-7.0.0/modules-Q16/filters
</pre>

<h2 class="magick-header"><a id="fonts"></a>Fonts</h2>

<p>ImageMagick is able to load raw TrueType and Postscript font files.  It searches for the font configuration file, <a href="resources.html#type.xml">type.xml</a>, in the following order, and loads them if found:</p>

<pre>
$MAGICK_CONFIGURE_PATH
$MAGICK_HOME/etc/ImageMagick/-7.0.0$MAGICK_HOME/share/ImageMagick-7.0.0$XDG_CACHE_HOME/ImageMagick
$HOME/.config/ImageMagick
&lt;<var>client path</var>&gt;/etc/ImageMagick
$MAGICK_FONT_PATH
</pre>

<h2 class="magick-header"><a id="environment"></a>Environment Variables</h2>

<p>Environment variables recognized by ImageMagick include:</p>

<div class="table-responsive">
<table class="table table-condensed table-striped">
  <tr>
    <td>HOME</td>
    <td>Set path to search for configuration files in <code>$HOME/.config/ImageMagick</code> if the directory exists.</td>
  </tr>
  <tr>
    <td>LD_LIBRARY_PATH</td>
    <td>Set path to the ImageMagick shareable libraries and other dependent libraries.</td>
  </tr>
  <tr>
    <td>MAGICK_AREA_LIMIT</td>
    <td>Set the maximum <var>width * height</var> of an image that can reside in the pixel cache memory.  Images that exceed the area limit are cached to disk (see <a href="resources.html#disk-limit">MAGICK_DISK_LIMIT</a>) and optionally memory-mapped.</td>
  </tr>
  <tr>
    <td>MAGICK_CODER_FILTER_PATH</td>
    <td>Set search path to use when searching for filter process modules (invoked via  <a href="command-line-options.html#process">-process</a>).  This path permits the user to extend ImageMagick's image processing functionality by adding loadable modules to a preferred location rather than copying them into the ImageMagick installation directory.  The formatting of the search path is similar to operating system search paths (i.e. colon delimited for Unix, and semi-colon delimited for Microsoft Windows). This user specified search path is searched before trying the <a href="resources.html#modules">default search path</a>.</td>
  </tr>
  <tr>
    <td>MAGICK_CODER_MODULE_PATH</td>
    <td>Set path where ImageMagick can locate its coder modules.  This path permits the user to arbitrarily extend the image formats supported by ImageMagick by adding loadable coder modules from an preferred location rather than copying them into the ImageMagick installation directory.  The formatting of the search path is similar to operating system search paths (i.e. colon delimited for Unix, and semi-colon delimited for Microsoft Windows). This user specified search path is searched before trying the <a href="resources.html#modules">default search path</a>.</td>
  </tr>
  <tr>
    <td>MAGICK_CONFIGURE_PATH</td>
    <td>Set path where ImageMagick can locate its configuration files.  Use this search path to search for configuration (.xml) files. The formatting of the search path is similar to operating system search paths (i.e. colon delimited for Unix, and semi-colon delimited for Microsoft Windows). This user specified search path is searched before trying the <a href="resources.html#configure">default search path</a>.</td>
  </tr>
  <tr>
    <td>MAGICK_DEBUG</td>
    <td>Set debug options.  See <a href="command-line-options.html#debug">-debug</a> for a description of debugging options.</td>
  </tr>
  <tr>
    <td><a id="disk-limit"></a>MAGICK_DISK_LIMIT</td>
    <td>Set maximum amount of disk space in bytes permitted for use by the pixel cache.  When this limit is exceeded, the pixel cache is not be created and an error message is returned.</td>
  </tr>
  <tr>
    <td>MAGICK_ERRORMODE</td>
    <td>Set the process error mode (Windows only).  A typical use might be a value of 1 to prevent error mode dialogs from displaying a message box and hanging the application.</td>
  </tr>
  <tr>
    <td>MAGICK_FILE_LIMIT</td>
    <td>Set maximum number of open pixel cache files.  When this limit is exceeded, any subsequent pixels cached to disk are closed and reopened on demand.  This behavior permits a large number of images to be accessed simultaneously on disk, but with a speed penalty due to repeated open/close calls.</td>
  </tr>
  <tr>
    <td>MAGICK_FONT_PATH</td>
    <td>Set path ImageMagick searches for TrueType and Postscript Type1 font files.  This path is only consulted if a particular font file is not found in the current directory.</td>
  </tr>
  <tr>
    <td>MAGICK_HEIGHT_LIMIT</td>
    <td>Set the maximum <var>height</var> of an image.</td>
  </tr>
  <tr>
    <td>MAGICK_HOME</td>
    <td>Set the path at the top of ImageMagick installation directory.  This path is consulted by <var>uninstalled</var> builds of ImageMagick which do not have their location hard-coded or set by an installer.</td>
  </tr>
  <tr>
    <td><a id="map-limit"></a>MAGICK_MAP_LIMIT</td>
    <td>Set maximum amount of memory map in bytes to allocate for the pixel cache.  When this limit is exceeded, the image pixels are cached to disk (see MAGICK_DISK_LIMIT).</td>
  </tr>
  <tr>
    <td>MAGICK_MEMORY_LIMIT</td>
    <td>Set maximum amount of memory in bytes to allocate for the pixel cache from the heap.  When this limit is exceeded, the image pixels are cached to memory-mapped disk (see <a href="resources.html#map-limit">MAGICK_MAP_LIMIT</a>).</td>
  </tr>
  <tr>
    <td>MAGICK_OCL_DEVICE</td>
    <td>Set to <code>off</code> to disable hardware acceleration of certain accelerated algorithms (e.g. blur, convolve, etc.).</td>
  </tr>
  <tr>
    <td>MAGICK_PRECISION</td>
    <td>Set the maximum number of significant digits to be printed.</td>
  </tr>
  <tr>
    <td>MAGICK_SHRED_PASSES</td>
    <td>If you want to keep the temporary files ImageMagick creates private, overwrite them with zeros or random data before they are removed.  On the first pass, the file is zeroed.  For subsequent passes, random data is written.</td>
  </tr>
  <tr>
    <td>MAGICK_SYNCHRONIZE</td>
    <td>Set to "true" to ensure all image data is fully flushed and synchronized to disk. There is a performance penalty, however, the benefits include ensuring a valid image file in the event of a system crash and early reporting if there is not enough disk space for the image pixel cache.</td>
  </tr>
  <tr>
    <td>MAGICK_TEMPORARY_PATH</td>
    <td>Set path to store temporary files.</td>
  </tr>
  <tr>
    <td>MAGICK_THREAD_LIMIT</td>
    <td>Set maximum parallel threads.  Many ImageMagick algorithms run in parallel on multi-processor systems.  Use this environment variable to set the maximum number of threads that are permitted to run in parallel.</td>
  </tr>
  <tr>
    <td>MAGICK_THROTTLE</td>
    <td>Periodically yield the CPU for at least the time specified in milliseconds.</td>
  </tr>
  <tr>
    <td>MAGICK_TIME_LIMIT</td>
    <td>Set maximum time in seconds.  When this limit is exceeded, an exception is thrown and processing stops.</td>
  </tr>
  <tr>
    <td>MAGICK_WIDTH_LIMIT</td>
    <td>Set the maximum <var>width</var> of an image.</td>
  </tr>
</table></div>

<p>Define arguments for the <code>MAGICK_AREA_LIMIT</code>, <code>MAGICK_DISK_LIMIT</code>, <code>MAGICK_MAP_LIMIT</code>, and <code>MAGICK_MEMORY_LIMIT</code> environment variables with SI prefixes (.e.g <code>100MB</code>). <code>MAGICK_WIDTH_LIMIT</code> and <code>MAGICK_HEIGHT_LIMIT</code> accepts pixel suffixes such as MP for mega-pixels (e.g. 100MP).</p>

</div>
  <footer class="magick-footer">
    <p><a href="support.html">Donate</a> •
     <a href="sitemap.html">Sitemap</a> •
    <a href="links.html">Related</a> •
    <a href="architecture.html">Architecture</a>
</p>
    <p><a href="resources.html#">Back to top</a> •
    <a href="http://pgp.mit.edu:11371/pks/lookup?op=get&amp;search=0x89AB63D48277377A">Public Key</a> •
    <a href="http://nextgen.imagemagick.org/script/contact.php">Contact Us</a></p>
        <p><small>©  1999-2016 ImageMagick Studio LLC</small></p>
  </footer>
</div><!-- /.container -->

  <script src="https://localhost/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  <script src="http://nextgen.imagemagick.org/js/magick.html"></script>
</div>
</body>
</html>
