



<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
  <meta http-equiv="x-ua-compatible" content="ie=edge" />
  <title>Resources @ ImageMagick</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="https://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-2017 ImageMagick Studio LLC"/>
  <meta name="distribution" content="Global"/>
  <meta name="magick-serial" content="P131-S030410-R485315270133-P82224-A6668-G1245-1"/>
  <meta name="google-site-verification" content="_bMOCDpkx9ZAzBwb2kF3PRHbfUUdFj2uO8Jd1AXArz4" />
  <link rel="canonical" href="https://www.imagemagick.org/script/resources.html"/>
  <link rel="icon" href="../images/wand.png"/>
  <link rel="shortcut icon" href="../images/wand.ico"/>
  <link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:900,400,400italic,700,700italic,300,300italic|Open+Sans:300italic,400italic,700italic,300,400,600,700" />
  <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="download.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="develop.html">Develop</a>
      <a class="magick-nav-item " href="https://www.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="https://www.imagemagick.org/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="https://www.imagemagick.org/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="https://www.imagemagick.org/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="https://www.imagemagick.org/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="https://www.imagemagick.org/source/english.xml">english.xml</a></dt>
  <dd>Associate message tags with English translations.</dd>

<dt><a href="https://www.imagemagick.org/source/francais.xml">francais.xml</a></dt>
  <dd>Associate message tags with French translations.  </dd>

<dt><a href="https://www.imagemagick.org/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="https://www.imagemagick.org/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="https://www.imagemagick.org/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="https://www.imagemagick.org/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="https://www.imagemagick.org/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="100KP"/>
</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="8KP"/>
</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, 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="https://www.imagemagick.org/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="https://www.imagemagick.org/source/thresholds.xml">thresholds.xml</a></dt>
  <dd>Set threshold maps for ordered posterized dither.</dd>

<dt><a id="type.xml"></a><a href="https://www.imagemagick.org/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="https://www.imagemagick.org/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="https://www.imagemagick.org/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.5</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.5/modules-Q16/coders
&lt;<var>client path</var>&gt;/../lib/ImageMagick-7.0.5/modules-Q16/coders
$MAGICK_HOME/lib/ImageMagick-7.0.5/modules-Q16/coders
$MAGICK_HOME/share/ImageMagick-7.0.5/modules-Q16/coders
$XDG_CACHE_HOME/ImageMagick
$HOME/.config/ImageMagick
&lt;<var>client path</var>&gt;/lib/ImageMagick-7.0.5/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.5/modules-Q16/filters
&lt;<var>client path</var>&gt;/../lib/ImageMagick-7.0.5/modules-Q16/filters
$MAGICK_HOME/lib/ImageMagick-7.0.5/modules-Q16/filters
$MAGICK_HOME/share/ImageMagick-7.0.5/modules-Q16/filters
$XDG_CACHE_HOME/ImageMagick
$HOME/.config/ImageMagick
&lt;<var>client path</var>&gt;/lib/ImageMagick-7.0.5/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.5
$MAGICK_HOME/share/ImageMagick-7.0.5
$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_LIMIT</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="security-policy.html">Security</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="https://www.imagemagick.org/script/contact.php">Contact Us</a></p>
        <p><small>© 1999-2017 ImageMagick Studio LLC</small></p>
  </footer>
</div><!-- /.container -->

  <script src="https://localhost/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script src="../js/magick.html"></script>
</div>
</body>
</html>
<!-- Magick Cache 2nd June 2017 20:19 -->