<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html version="-//W3C//DTD XHTML 1.1//EN"
      xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.w3.org/1999/xhtml
                          http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd">
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
  <meta name="google-site-verification" content="_bMOCDpkx9ZAzBwb2kF3PRHbfUUdFj2uO8Jd1AXArz4"/>
  <title>ImageMagick: Install from Binary Distribution</title>
  <meta http-equiv="content-language" content="en-US"/>
  <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
  <meta http-equiv="reply-to" content="magick-users@imagemagick.org"/>
  <meta name="application-name" content="ImageMagick"/>
  <meta name="description" content="Use ImageMagick to convert, edit, or compose bitmap images in a variety of formats.  In addition, resize, rotate, shear, distort or transform images automagically."/>
  <meta name="application-url" content="http://www.imagemagick.org"/>
  <meta name="generator" content="PHP"/>
  <meta name="keywords" content="install, from, binary, distribution, ImageMagick, PerlMagick, image processing, OpenMP, software development library, image, photo, software, Magick++, MagickWand"/>
  <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-2012 ImageMagick Studio LLC"/>
  <meta name="distribution" content="Global"/>
  <link rel="icon" href="../images/wand.png"/>
  <link rel="shortcut icon" href="../images/wand.ico"  type="images/x-icon"/>
  <link rel="canonical" href="http://www.imagemagick.org" />
  <link rel="meta" type="application/rdf+xml" title="ICI" href="http://imagemagick.org/ici.rdf"/>

  <!-- Add jQuery library -->
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
  
  <!-- Add mousewheel plugin (this is optional) -->
  <script type="text/javascript" src="http://www.imagemagick.org/fancybox/lib/jquery.mousewheel-3.0.6.pack.js"></script>
  
  <!-- Add fancyBox -->
  <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/source/jquery.fancybox.css?v=2.0.6" type="text/css" media="screen" />
  <script type="text/javascript" src="http://www.imagemagick.org/fancybox/source/jquery.fancybox.pack.js?v=2.0.6"></script>
  
  <!-- Optionally add helpers - button, thumbnail and/or media -->
  <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/source/helpers/jquery.fancybox-buttons.css?v=1.0.2" type="text/css" media="screen" />
  <script type="text/javascript" src="http://www.imagemagick.org/fancybox/source/helpers/jquery.fancybox-buttons.js?v=1.0.2"></script>
  <script type="text/javascript" src="http://www.imagemagick.org/fancybox/source/helpers/jquery.fancybox-media.js?v=1.0.0"></script>
  
  <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/source/helpers/jquery.fancybox-thumbs.css?v=2.0.6" type="text/css" media="screen" />
  <script type="text/javascript" src="http://www.imagemagick.org/fancybox/source/helpers/jquery.fancybox-thumbs.js?v=2.0.6"></script>
  
  <script type="text/javascript">
  	$(document).ready(function() {
  		$(".fancybox").fancybox();
  	});
  </script>

  <!-- ImageMagick style -->
  <style type="text/css" media="all">
    @import url("../www/magick.css");
  </style>
</head>

<body id="www-imagemagick-org">

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'offline-script','//127.0.0.1/analytics.js','ga');

  ga('create', 'UA-40133312-1', 'imagemagick.org');
  ga('send', 'pageview');
</script>

<div class="titlebar">
<div style="margin: 17px auto; float: left;">
  <script type="text/javascript">
  <!--
    google_ad_client = "pub-3129977114552745";
    google_ad_slot = "5439289906";
    google_ad_width = 728;
    google_ad_height = 90;
  //-->
  </script>
  <script type="text/javascript"
    src="http://127.0.0.1/pagead/show_ads.js">
  </script>
</div>
<a href="http://www.imagemagick.org/discourse-server/">
  <img src="../images/logo.jpg"
  alt="ImageMagick Logo"
  style="width: 123px; height: 118px; border: 0px; float: right;" /></a>
<a href="../index.html">
  <img src="../images/sprite.jpg"
  alt="ImageMagick Sprite"
  style="width: 114px; height: 118px; border: 0px; float: right;" /></a>
</div>

<div class="westbar">

<div class="menu">
  <a title="About ImageMagick" href="../index.html">About ImageMagick</a>
</div>
<div class="menu">
  <a title="Binary Releases" href="binary-releases.html">Binary Releases</a>
</div>
<div class="sub">
    <a title="Binary Release: Unix" href="binary-releases.html#unix">Unix</a>
</div>
<div class="sub">
    <a title="Binary Release: MacOS X" href="binary-releases.html#macosx">Mac OS X</a>
</div>
<div class="sub">
    <a title="Binary Release: iOS" href="binary-releases.html#iOS">iOS</a>
</div>
<div class="sub">
    <a title="Binary Release: Windows" href="binary-releases.html#windows">Windows</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a title="Command-line Tools" href="command-line-tools.html">Command-line Tools</a>
</div>
<div class="sub">
    <a title="Command-line Tools: Processing" href="command-line-processing.html">Processing</a>
</div>
<div class="sub">
    <a title="Command-line Tools: Options" href="command-line-options.html">Options</a>
</div>
<div class="sub">
    <a title="Command-line Tools: Usage" href="http://www.imagemagick.org/Usage/">Usage</a>
</div>
<div class="menu">
  <a title="Program Interfaces" href="api.html">Program Interfaces</a>
</div>
<div class="sub">
    <a title="Program Interface: MagickWand" href="magick-wand.html">MagickWand</a>
</div>
<div class="sub">
    <a title="Program Interface: MagickCore" href="magick-core.html">MagickCore</a>
</div>
<div class="sub">
    <a title="Program Interface: PerlMagick" href="perl-magick.html">PerlMagick</a>
</div>
<div class="sub">
    <a title="Program Interface: Magick++" href="magick++.html">Magick++</a>
</div>
<div class="sep"></div>
<div  class="menu">
   <a title="Install from Source" href="install-source.html">Install from Source</a>
</div>
<div class="sub">
    <a title="Install from Source: Unix" href="install-source.html#unix">Unix</a>
</div>
<div class="sub">
    <a title="Install from Source: Windows" href="install-source.html#windows">Windows</a>
 </div>
<div class="menu">
  <a title="Resources" href="resources.html">Resources</a>
</div>
<div class="menu">
  <a title="Architecture" href="architecture.html">Architecture</a>
</div>
<div class="menu">
  <a title="Download" href="download.html">Download</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a title="Search" href="search.html">Search</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a title="Site Map" href="sitemap.html">Site Map</a>
</div>
<div  class="sub">
  <a title="Site Map: Links" href="links.html">Links</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a title="Support ImageMagick Development" href="support.html">Support ImageMagick Development</a>
</div>
</div>

<div class="eastbar">
  <script type="text/javascript">
    /* <![CDATA[ */
    (function() {
        var po = document.createElement('offline-script'), t = document.getElementsByTagName('offline-script')[0];
        po.type = 'text/javascript';
        po.async = true;
        po.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto';
        var script = document.getElementsByTagName('offline-script')[0];
        script.parentNode.insertBefore(po, script);
    })();
    /* ]]> */
  </script>
  <div> <a class="FlattrButton" style="display:none;" rev="flattr;button:compact;" href="http://www.imagemagick.org/"></a></div>
  <noscript>
    <a href="http://flattr.com/thing/947300/Convert-Edit-And-Compose-Images" target="_blank">
    <img src="http://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" width="93" height="20" border="0" /></a>
  </noscript>
    <div class="g-plusone" id="gplusone"></div>
    <script type="text/javascript">
      /* <![CDATA[ */
      window.___gcfg = {
        lang: 'en-US'
      };

      (function() {
        var po = document.createElement('offline-script');
        po.type = 'text/javascript';
        po.async = true;
        po.src = 'https://127.0.0.1/js/plusone.js';
        var script = document.getElementsByTagName('offline-script')[0];
        script.parentNode.insertBefore(po, script);
      })();
      var gplusone = document.getElementById("gplusone");
      gplusone.setAttribute("data-size","medium");
      gplusone.setAttribute("data-count","true");
      /* ]]> */
    </script>
</div>

<div class="main">


<h1>Download Binary Releases</h1>
<p class="navigation-index">[<a href="binary-releases.html#unix">Unix Binary Release</a> &bull; <a href="binary-releases.html#macosx">Mac OS X Binary Release</a> &bull; <a href="binary-releases.html#iOS">iOS Binary Release</a> &bull; <a href="binary-releases.html#windows">Windows Binary Release</a>]</p>

<div class="doc-section">
<p>You can install ImageMagick from <a href="install-source.html">source</a>.  However, if don't have a proper development environment or if you're anxious to get started, download a ready-to-run <a href="binary-releases.html#unix">Unix</a> or <a href="binary-releases.html#windows">Windows</a> executable.  Before you download, you may want to review recent <a href="changelog.html">changes</a> to the ImageMagick distribution.</p>
</div>

<h2><a id="unix"></a>Unix Binary Release</h2>
<div class="doc-section">

<p>These are the Unix variations that we support.  If your system is not on the list, try installing from <a href="install-source.html">source</a>. Although ImageMagick runs fine on a single core computer, it automagically runs in parallel on dual and quad-core systems reducing run times considerably.</p>

<table class="doc">
  <col width="50%"/> <col width="10%"/> <col width="10%"/> <col width="30%"/>
  <tr>
    <th>Version</th>
    <th>HTTP</th>
    <th>FTP</th>
    <th>Description</th>
  </tr>

  <tr>
      <td valign="top">ImageMagick-7.0.0-0.i386.rpm</td>
    <td valign="top"><a href= "http://www.imagemagick.org/download/linux/CentOS/i386/ImageMagick-7.0.0-0.i386.rpm">download</a></td>
    <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/linux/CentOS/i386/ImageMagick-7.0.0-0.i386.rpm">download</a></td>
    <td valign="top">Redhat / CentOS 5.8 i386 RPM</td>
  </tr>

  <tr>
      <td valign="top">ImageMagick-7.0.0-0.x86_64.rpm</td>
      <td valign="top"><a href= "http://www.imagemagick.org/download/linux/CentOS/x86_64/ImageMagick-7.0.0-0.x86_64.rpm">download</a></td>
    <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/linux/CentOS/x86_64/ImageMagick-7.0.0-0.x86_64.rpm">download</a></td>
    <td valign="top">Redhat / CentOS 5.8 x86_64 RPM</td>
  </tr>

  <tr>
    <td valign="top">ImageMagick RPM's</td>
    <td valign="top"><a href="http://www.imagemagick.org/download/linux/CentOS">download</a></td>
    <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/linux/CentOS">download</a></td>
    <td valign="top">Development, Perl, C++, and documentation RPM's.</td>
  </tr>

  <tr>
    <td valign="top">ImageMagick-sparc-sun-solaris2.10.tar.gz</td>
    <td valign="top"><a href="http://www.imagemagick.org/download/binaries/ImageMagick-sparc-sun-solaris2.10.tar.gz">download</a></td>
    <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-sparc-sun-solaris2.10.tar.gz">download</a></td>
    <td valign="top">Solaris Sparc 2.10</td>
  </tr>

  <tr>
    <td valign="top">ImageMagick-i686-pc-cygwin.tar.gz</td>
    <td valign="top"><a href="http://www.imagemagick.org/download/binaries/ImageMagick-i686-pc-cygwin.tar.gz">download</a></td>
    <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-i686-pc-cygwin.tar.gz">download</a></td>
    <td valign="top">Cygwin</td>
  </tr>

  <tr>
    <td valign="top">ImageMagick-i686-pc-mingw32.tar.gz</td>
    <td valign="top"><a href="http://www.imagemagick.org/download/binaries/ImageMagick-i686-pc-mingw32.tar.gz">download</a></td>
    <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-i686-pc-mingw32.tar.gz">download</a></td>
    <td valign="top">MinGW</td>
  </tr>
</table>

<p>Verify its <a href="http://www.imagemagick.org/download/binaries/digest.rdf">message digest</a>.</p>

<p>ImageMagick RPM's are self-installing.  Simply type the following command and you're ready to start using ImageMagick:</p>

<p class='crt'><span class="crtprompt"> $ </span><span class='crtin'>rpm -Uvh ImageMagick-7.0.0-0.i386.rpm</span></p>
<p>For other systems, create (or choose) a directory to install the package into and change to that directory, for example:</p>

<p class='crt'><span class="crtprompt"> $ </span><span class='crtin'>cd $HOME</span></p>
<p>Next, extract the contents of the package.  For example:</p>

<p class='crt'><span class="crtprompt"> $ </span><span class='crtin'>tar xvfz ImageMagick.tar.gz</span></p>
<p>Set the <code>MAGICK_HOME</code> environment variable to the path where you extracted the ImageMagick files. For example:</p>

<p class='crt'><span class="crtprompt"> $ </span><span class='crtin'>export MAGICK_HOME="$HOME/ImageMagick-7.0.0"</span></p>
<p>If the <code>bin</code> subdirectory of the extracted package is not already in your executable search path, add it to your <code>PATH</code> environment variable. For example:</p>

<p class='crt'><span class="crtprompt"> $ </span><span class='crtin'>export PATH="$MAGICK_HOME/bin:$PATH"</span></p>

<p>On Linux and Solaris machines add <code>$MAGICK_HOME/lib</code> to the <code>LD_LIBRARY_PATH</code> environment variable:</p>

<p class='crt'><span class="crtprompt"> $ </span><span class='crtin'>LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$MAGICK_HOME/lib"</span><span class='crtout'></span><span class="crtprompt"> $ </span><span class='crtin'>export LD_LIBRARY_PATH</span></p>
<p>Finally, to verify ImageMagick is working properly, type the following on the command line:</p>

<p class='crt'><span class="crtprompt"> $ </span><span class='crtin'>convert logo: logo.gif</span><span class='crtout'></span><span class="crtprompt"> $ </span><span class='crtin'>identify logo.gif</span><span class='crtout'></span><span class="crtprompt"> $ </span><span class='crtin'>display logo.gif</span></p>
<p>Congratulations, you have a working ImageMagick distribution under Unix or Linux and you are ready to use ImageMagick to <a href="http://www.imagemagick.org/Usage/">convert, compose, or edit</a> your images or perhaps you'll want to use one of the <a href="api.html">Application Program Interfaces</a> for C, C++, Perl, and others.</p>

</div>

<h2><a id="macosx"></a>Mac OS X Binary Release</h2>
<div class="doc-section">

<p>We recommend <a href="http://www.macports.org">MacPorts</a> which custom builds ImageMagick in your environment.  Download MacPorts and type:</p>

<p class='crt'><span class="crtprompt"> $ </span><span class='crtin'>sudo port install ImageMagick</span></p>
<p>The <code>port</code> command downloads ImageMagick and many of its delegate libraries (e.g. JPEG, PNG, Freetype, etc.) and configures, builds, and installs ImageMagick automagically.  Alternatively, you can download the ImageMagick Mac OS X distribution we provide:</p>

<table class="doc">
  <col width="50%"/> <col width="10%"/> <col width="10%"/> <col width="30%"/>
  <tr>
    <th>Version</th>
    <th>HTTP</th>
    <th>FTP</th>
    <th>Description</th>
  </tr>

  <tr>
    <td valign="top">ImageMagick-x86_64-apple-darwin12.3.0.tar.gz</td>
    <td valign="top"><a href="http://www.imagemagick.org/download/binaries/ImageMagick-x86_64-apple-darwin12.3.0.tar.gz">download</a></td>
    <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-x86_64-apple-darwin12.3.0.tar.gz">download</a></td>
    <td valign="top">Mac OS X Mountain Lion</td>
  </tr>
</table>

<p>Verify its <a href="http://www.imagemagick.org/download/binaries/digest.rdf">message digest</a>.</p>

<p>Create (or choose) a directory to install the package into and change to that directory, for example:</p>

<p class='crt'><span class="crtprompt"> $ </span><span class='crtin'>cd $HOME</span></p>
<p>Next, extract the contents of the package.  For example:</p>

<p class='crt'><span class="crtprompt"> $ </span><span class='crtin'>tar xvfz ImageMagick-x86_64-apple-darwin12.3.0.tar.gz</span></p>
<p>Set the <code>MAGICK_HOME</code> environment variable to the path where you extracted the ImageMagick files. For example:</p>

<p class='crt'><span class="crtprompt"> $ </span><span class='crtin'>export MAGICK_HOME="$HOME/ImageMagick-7.0.0"</span></p>
<p>If the <code>bin</code> subdirectory of the extracted package is not already in your executable search path, add it to your <code>PATH</code> environment variable. For example:</p>

<p class='crt'><span class="crtprompt"> $ </span><span class='crtin'>export PATH="$MAGICK_HOME/bin:$PATH"</span></p>

<p>Set the <code>DYLD_LIBRARY_PATH</code> environment variable:</p>

<p class='crt'><span class="crtprompt"> $ </span><span class='crtin'>export DYLD_LIBRARY_PATH="$MAGICK_HOME/lib/"</span></p>
<p>Finally, to verify ImageMagick is working properly, type the following on the command line:</p>

<p class='crt'><span class="crtprompt"> $ </span><span class='crtin'>convert logo: logo.gif</span><span class='crtout'></span><span class="crtprompt"> $ </span><span class='crtin'>identify logo.gif</span><span class='crtout'></span><span class="crtprompt"> $ </span><span class='crtin'>display logo.gif</span></p>
<p><b>Note</b>, the <a href="display.html">display</a> program requires the X11 server available on your Mac OS X installation DVD. Once that is installed, you will also need to "export DISPLAY=:0".</p>

<p>The best way to deal with all the exports is to put them at the end of your .profile file</p>

<p>Congratulations, you have a working ImageMagick distribution under Mac OS X and you are ready to use ImageMagick to <a href="http://www.imagemagick.org/Usage/">convert, compose, or edit</a> your images or perhaps you'll want to use one of the <a href="api.html">Application Program Interfaces</a> for C, C++, Perl, and others.</p>

</div>

<h2><a id="iOS"></a>iOS Binary Release</h2>
<div class="doc-section">

<p><a href="http://www.cloudgoessocial.net/2011/03/21/im-xcode4-ios4-3/">~Claudio</a> provides iOS builds of ImageMagick.</p>

<h4>Download iOS Distribution</h4>

<p>You can download the iOS distribution directly from ImageMagick's <a href="http://www.imagemagick.org/download/iOS">repository</a>.</p>

<p>There are always 2 packages for the compiled ImageMagick:</p>

<ul>
<li>iOSMagick-VERSION-libs.zip</li>
<li>iOSMagick-VERSION.zip</li>
</ul>

<p>The first one includes headers and compiled libraries that have been used to compile ImageMagick. Most users would need this one.</p>

<h4>ImageMagick compiling script for iOS OS and iOS Simulator</h4>

<p>To run the script:</p>
<pre class="text">
	./imagemagick_compile.sh <em>VERSION</em>
</pre>
<p>where <em>VERSION</em> is the version of ImageMagick you want to compile (i.e.: 7.0.0-0, svn, ...)</p>

<p>This script compiles ImageMagick as a static library to be included in iOS projects and adds support for</p>
<ul>
<li>png</li>
<li>jpeg</li>
<li>tiff</li>
</ul>

<p>Upon successful compilation a folder called <code>IMPORT_ME</code> is created on your <code>~/Desktop</code>. You can import it into your XCode project.</p>

<h5>XCode project settings</h5>

<p>After including everything into XCode please also make sure to have these settings (Build tab of the project information):</p>
<ul>
<li>Other Linker Flags: -lMagickCore-Q16 -lMagickWand-Q16 -ljpeg -lpng -lbz2 -lz</li>
<li>Header Search Paths: $(SRCROOT) - make it Recursive</li>
<li>Library Search Paths: $(SRCROOT) - make it Recursive</li>
</ul>

<p>On the lower left click on the small-wheel and select: Add User-Defined Setting</p>
<ul>
<li>Key: OTHER_CFLAGS</li>
<li>Value: -Dmacintosh=1</li>
</ul>

<h5>Sample project</h5>

<p>A <a href="http://www.cloudgoessocial.net/im_iphone/IM_Test.zip">sample project </a> is available for download. It is not updated too often, but it does give an idea of all the settings and some ways to play around with ImageMagick in an iOS application.</p>
</div>

<h2><a id="windows"></a>Windows Binary Release</h2>
<div class="doc-section">

<p>ImageMagick runs on Windows 8 (x86 &amp; x64), Windows 7 (x86 &amp; x64), Windows XP (x86) with Service Pack 3, Windows Vista (x86 &amp; x64) with Service Pack 2, Windows Server 2003 (x86 &amp; x64) with Service Pack 2 (verify MSXML6 is present), Windows Server 2003 R2 (x86 &amp; x64), Windows Server 2008 (x86 &amp; x64) with Service Pack 2, and Windows Server 2008 R2 (x64).</p>

<p>The amount of memory can be an important factor, especially if you intend to work on large images.  A minimum of 512 MB of RAM is recommended, but the more RAM the better.  Although ImageMagick runs well on a single core computer, it automagically runs in parallel on multi-core systems reducing run times considerably.</p>

<p>The Windows version of ImageMagick is self-installing.  Simply click on the appropriate version below and it will launch itself and ask you a few installation questions.  Versions with <em>Q8</em> in the name are 8 bits-per-pixel component (e.g. 8-bit red, 8-bit green, etc.), whereas,  <em>Q16</em> in the filename are 16 bits-per-pixel component. A Q16 version permits you to read or write 16-bit images without losing precision but requires twice as much resources as the Q8 version.  Versions with <em>dll</em> in the filename include ImageMagick libraries as <a href="http://www.answers.com/topic/dll">dynamic link libraries</a>. Unless you have specific requirements, we recommend this version of ImageMagick for 32-bit Windows:</p>

<table class="doc">
  <col width="50%"/> <col width="10%"/> <col width="10%"/> <col width="30%"/>
  <tr>
    <th>Version</th>
    <th>HTTP</th>
    <th>FTP</th>
    <th>Description</th>
  </tr>

  <tr>
        <td valign="top">ImageMagick-7.0.0-0-Q16-x86-dll.exe</td>
        <td valign="top"><a href= "http://www.imagemagick.org/download/binaries/ImageMagick-7.0.0-0-Q16-x86-dll.exe">download</a></td>
      <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-7.0.0-0-Q16-x86-dll.exe">download</a></td>
    <td valign="top">Win32 dynamic at 16 bits-per-pixel</td>
  </tr>
</table>

<p>Or choose from these alternate Windows binary configurations:</p>

<table class="doc">
  <col width="50%"/> <col width="10%"/> <col width="10%"/> <col width="30%"/>
  <tr>
    <th>Version</th>
    <th>HTTP</th>
    <th>FTP</th>
    <th>Description</th>
  </tr>

  <tr>
        <td valign="top">ImageMagick-7.0.0-0-Q16-x86-static.exe</td>
        <td valign="top"><a href= "http://www.imagemagick.org/download/binaries/ImageMagick-7.0.0-0-Q16-x86-static.exe">download</a></td>
      <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-7.0.0-0-Q16-x86-static.exe">download</a></td>
    <td valign="top">Win32 static at 16 bits-per-pixel</td>
  </tr>

  <tr>
        <td valign="top">ImageMagick-7.0.0-0-Q8-x86-dll.exe</td>
        <td valign="top"><a href= "http://www.imagemagick.org/download/binaries/ImageMagick-7.0.0-0-Q8-x86-dll.exe">download</a></td>
      <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-7.0.0-0-Q8-x86-dll.exe">download</a></td>
    <td valign="top">Win32 dynamic at 8 bits-per-pixel</td>
  </tr>

  <tr>
        <td valign="top">ImageMagick-7.0.0-0-Q8-x86-static.exe</td>
        <td valign="top"><a href= "http://www.imagemagick.org/download/binaries/ImageMagick-7.0.0-0-Q8-x86-static.exe">download</a></td>
      <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-7.0.0-0-Q8-x86-static.exe">download</a></td>
    <td valign="top">Win32 static at 8 bits-per-pixel</td>
  </tr>

  <tr>
        <td valign="top">ImageMagick-7.0.0-0-Q16-x64-dll.exe</td>
        <td valign="top"><a href= "http://www.imagemagick.org/download/binaries/ImageMagick-7.0.0-0-Q16-x64-dll.exe">download</a></td>
      <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-7.0.0-0-Q16-x64-dll.exe">download</a></td>
   <td valign="top">Win64 dynamic at 16 bits-per-pixel</td>
  </tr>

  <tr>
        <td valign="top">ImageMagick-7.0.0-0-Q16-x64-static.exe</td>
        <td valign="top"><a href= "http://www.imagemagick.org/download/binaries/ImageMagick-7.0.0-0-Q16-x64-static.exe">download</a></td>
      <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-7.0.0-0-Q16-x64-static.exe">download</a></td>
   <td valign="top">Win64 static at 16 bits-per-pixel</td>
  </tr>

  <tr>
        <td valign="top">ImageMagick-7.0.0-0-Q16-x86-windows.zip</td>
        <td valign="top"><a href= "http://www.imagemagick.org/download/binaries/ImageMagick-7.0.0-0-Q16-x86-windows.zip">download</a></td>
      <td valign="top"><a href="ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-7.0.0-0-Q16-x86-windows.zip">download</a></td>
    <td valign="top">Portable Win32 static at 16 bits-per-pixel.  Just copy to your host and run (no installer, no Windows registry entries).</td>
  </tr>

</table>

<p>Verify its <a href="http://www.imagemagick.org/download/binaries/digest.rdf">message digest</a>.</p>

<p>To verify ImageMagick is working properly, type the following in an Command Prompt window:</p>

<p class='crt'><span class="crtprompt"> $ </span><span class='crtin'>convert logo: logo.gif</span><span class='crtout'></span><span class="crtprompt"> $ </span><span class='crtin'>identify logo.gif</span><span class='crtout'></span><span class="crtprompt"> $ </span><span class='crtin'>imdisplay</span></p>
<p>If you have any problems, install the <a href="http://www.microsoft.com/downloads/details.aspx?familyid=A7B7A05E-6DE6-4D3A-A423-37BF0912DB84">Visual C++ 2010 Redistributable Package (x86)</a> or <a href="http://www.microsoft.com/downloads/details.aspx?familyid=BD512D9E-43C8-4655-81BF-9350143D5867">Visual C++ 2010 Redistributable Package (x64)</a>. 64-bit Windows requires both packages (x86 &amp; x64).</p>

<p>Congratulations, you have a working ImageMagick distribution under Windows and you are ready to use ImageMagick to <a href="http://www.imagemagick.org/Usage/">convert, compose, or edit</a> your images or perhaps you'll want to use one of the <a href="api.html">Application Program Interfaces</a> for C, C++, Perl, and others.</p>

</div>

</div>

<div id="linkbar">
    <span id="linkbar-west">&nbsp;</span>

    <span id="linkbar-center">
      <a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> &bull;
      <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a> &bull;
      <a href="http://jqmagick.imagemagick.org/">JqMagick</a>
    </span>
    <span id="linkbar-east">&nbsp;</span>
  </div>
  <div class="footer">
    <span id="footer-west">&copy; 1999-2013 ImageMagick Studio LLC</span>
    <span id="footer-east"> <a href="contact.html">Contact the Wizards</a></span>
  </div>
  <div style="clear: both; margin: 0; width: 100%; "></div>
</body>
</html>
