



<!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=viewport content="width=device-width, initial-scale=0.3333334">
  <meta name="google-site-verification" content="_bMOCDpkx9ZAzBwb2kF3PRHbfUUdFj2uO8Jd1AXArz4"/>
  <title>ImageMagick: Convert, Edit, Or Compose Bitmap Images</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="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="convert, edit, or, compose, bitmap, images, 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-2012 ImageMagick Studio LLC"/>
  <meta name="distribution" content="Global"/>
  <meta name="magick-serial" content="P131-S030410-R485315270133-P82224-A6668-G1245-1"/>
  <link rel="icon" href="http://www.imagemagick.org/images/wand.png"/>
  <link rel="shortcut icon" href="http://www.imagemagick.org/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/2.1.0/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.1.5" type="text/css" media="screen" />
  <script type="text/javascript" src="http://www.imagemagick.org/fancybox/source/jquery.fancybox.pack.js?v=2.1.5"></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.5" type="text/css" media="screen" />
  <script type="text/javascript" src="http://www.imagemagick.org/fancybox/source/helpers/jquery.fancybox-buttons.js?v=1.0.5"></script>
  <script type="text/javascript" src="http://www.imagemagick.org/fancybox/source/helpers/jquery.fancybox-media.js?v=1.0.6"></script>
  
  <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/source/helpers/jquery.fancybox-thumbs.css?v=1.0.7" type="text/css" media="screen" />
  <script type="text/javascript" src="http://www.imagemagick.org/fancybox/source/helpers/jquery.fancybox-thumbs.js?v=1.0.7"></script>
  
  <script type="text/javascript">
  	$(document).ready(function() {
  		$(".fancybox").fancybox();
  	});
  </script>

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

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

<script type="text/javascript">
  (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','//www.google-analytics.com/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://pagead2.googlesyndication.com/pagead/show_ads.js">
  </script>
</div>
<a href="discourse-server">
  <img src="http://www.imagemagick.org/images/logo.jpg"
  alt="ImageMagick Logo" width="123" height="118"
  style="width: 123px; height: 118px; border: 0px; float: right;" /></a>
<a href="http://www.imagemagick.org/index.html">
  <img src="http://www.imagemagick.org/images/sprite.jpg"
  alt="ImageMagick Sprite" width="114" height="118"
  style="width: 114px; height: 118px; border: 0px; float: right;" /></a>
</div>

<div class="westbar">

<div class="menu">
  <a title="About ImageMagick" href="http://www.imagemagick.org/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="http://www.imagemagick.org/www/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>
  <a class="FlattrButton" style="display:none;" rev="flattr;button:compact;" href="http://www.imagemagick.org/"></a>
  <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>

<div class="main">

<h1>Convert, Edit, and Compose Images</h1>
<p class="navigation-index">[<a href="index.html#features">Features and Capabilities</a> • <a href="index.html#news">ImageMagick News</a> • <a href="index.html#books">Books About ImageMagick</a> • <a href="index.html#community">User Community</a>]</p>

<a id="intro"></a>
<div class="doc-section">
<p><a class="fancybox" rel="group" href="http://www.imagemagick.org/images/wizard.png" title="And Now a Touch of Magick"><img id="logo" alt="And Now a Touch of Magick" class="icon" width="265" height="352" src="http://www.imagemagick.org/images/wizard.jpg"/></a> ImageMagick<sup><a href="http://tarr.uspto.gov/servlet/tarr?regser=serial&amp;entry=78333969">&#174;</a></sup> is a software suite to create, edit, compose, or convert bitmap images.  It can read and write images in a variety of <a href="formats.html">formats</a> (over 200) including PNG, JPEG, JPEG-2000, GIF, TIFF, <a href="motion-picture.html">DPX</a>, <a href="high-dynamic-range.html">EXR</a>, 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.</p>

<p>The functionality of ImageMagick is typically utilized from the command line or you can use the features from programs written in your favorite language. Choose from these interfaces: <a href="api.html#ada">G2F</a> (Ada), <a href="api.html#c">MagickCore</a> (C), <a href="api.html#c">MagickWand</a> (C), <a href="api.html#ch">ChMagick</a> (Ch), <a href="api.html#com_">ImageMagickObject</a> (COM+), <a href="api.html#c__">Magick++</a> (C++), <a href="api.html#java">JMagick</a> (Java), <a href="api.html#lisp">L-Magick</a> (Lisp), <a href="api.html#lua">Lua</a>, <a href="api.html#neko">NMagick</a> (Neko/haXe), <a href="api.html#dot-net">Magick.NET</a> (.NET), <a href="api.html#pascal">PascalMagick</a> (Pascal),  <a href="api.html#perl">PerlMagick</a> (Perl), <a href="api.html#php">MagickWand for PHP</a> (PHP),  <a href="api.html#php">IMagick</a> (PHP), <a href="api.html#python">PythonMagick</a> (Python), <a href="api.html#ruby">RMagick</a> (Ruby), or <a href="api.html#tcl">TclMagick</a> (Tcl/TK). With a language interface, use ImageMagick to modify or create images dynamically and <em>automagically</em>.</p>

<p>ImageMagick is free software delivered as a ready-to-run binary distribution or as source code that you may use, copy, modify, and distribute in both open and proprietary applications. It is distributed under the Apache 2.0 <a href="license.html" rel="license">license</a>,  approved by the <a href="http://www.opensource.org/">OSI</a> and recommended for use by the <a href="http://www.osscc.net/">OSSCC</a>.</p>

<p>The ImageMagick development process ensures a <a href="http://upstream-tracker.org/versions/imagemagick.html">stable API</a> and ABI. Before each ImageMagick release, we perform a comprehensive security assessment that includes <a href="https://code.google.com/p/address-sanitizer/">memory error</a> and <a href="https://code.google.com/p/data-race-test/wiki/ThreadSanitizer">thread data race</a> detection to prevent security vulnerabilities.</p>

<p>The current release is ImageMagick 6.9.0-10 available from <a href="download">http://www.imagemagick.org/download</a>.  It runs on <a href="http://www.imagemagick.org/download/linux/">Linux</a>, <a href="http://www.imagemagick.org/download/binaries/">Windows</a>, <a href="http://www.imagemagick.org/download/binaries/">Mac Os X</a>, <a href="http://www.imagemagick.org/download/iOS/">iOS</a>, Android OS, and others.</p>

<p>The authoritative ImageMagick web site is <a href="http://www.imagemagick.org/">http://www.imagemagick.org</a>.</p>
</div>

<div class="siz-mod-head">
  <span class="siz-mod-title"></span>
</div>

<h2><a id="features"></a>Features and Capabilities</h2>
<div class="doc-section">
<p>Here are just a few <a href="examples.html">examples</a> of what ImageMagick can do:</p>

<ul style="font-size: 90%;">
  <li><a href="convert.html">Format conversion</a>: convert an image from one <a href="formats.html">format </a> to another (e.g. PNG to JPEG).</li>
  <li><a href="http://www.imagemagick.org/Usage/resize/">Transform</a>: resize, rotate, crop, flip or trim an image.</li>
  <li><a href="http://www.imagemagick.org/Usage/masking/">Transparency</a>: render portions of an image invisible.</li>
  <li><a href="http://www.imagemagick.org/Usage/draw/">Draw</a>: add shapes or text to an image.</li>
  <li><a href="http://www.imagemagick.org/Usage/crop/">Decorate</a>: add a border or frame to an image.</li>
  <li><a href="http://www.imagemagick.org/Usage/blur/">Special effects</a>: blur, sharpen, threshold, or tint an image.</li>
  <li><a href="http://www.imagemagick.org/Usage/anim_basics/">Animation</a>: create a GIF animation sequence from a group of images.</li>
  <li><a href="http://www.imagemagick.org/Usage/text/">Text &amp; comments</a>: insert descriptive or artistic text in an image.</li>
  <li><a href="identify.html">Image identification</a>: describe the format and attributes of an image.</li>
  <li><a href="http://www.imagemagick.org/www/composite.html">Composite</a>: overlap one image over another.</li>
  <li><a href="http://www.imagemagick.org/www/montage.html">Montage</a>: juxtapose image thumbnails on an image canvas.</li>
  <li><a href="http://www.imagemagick.org/Usage/distorts/">Generalized pixel distortion</a>: correct for, or induce image distortions including perspective.</li>
  <li><a href="http://www.imagemagick.org/Usage/morphology/">Morphology of shapes</a>: extract features, describe shapes, and recognize patterns in images.</li>
  <li><a href="http://www.imagemagick.org/Usage/transform/#vision">Delineate image features</a>: Canny edge detection, mean-shift, Hough lines.</li>
  <li><a href="motion-picture.html">Motion picture support</a>: read and write the common image formats used in digital film work.</li>
  <li><a href="http://www.imagemagick.org/www/fx.html">Image calculator</a>: apply a mathematical expression to an image or image channels.</li>
  <li><a href="connected-components.html">Connected component labeling</a>: uniquely label connected regions in an image.</li>
  <li><a href="http://www.imagemagick.org/Usage/fourier/">Discrete Fourier transform</a>: implements the forward and inverse <a href="http://en.wikipedia.org/wiki/Discrete_Fourier_transform">DFT</a>.</li>
  <li><a href="http://www.fmwconcepts.com/misc_tests/perceptual_hash_test_results_510/index.html">Perceptual hash</a>: map visually identical images to the same or similar hash-- useful in image retrieval, authentication, indexing, or copy detection as well as digital watermarking.</li>
  <li><a href="color-management.html">Color management</a>: accurate color management with color profiles or in lieu of-- built-in gamma compression or expansion as demanded by the colorspace.</li>
  <li><a href="high-dynamic-range.html">High dynamic-range images</a>: accurately represent the wide range of intensity levels found in real scenes ranging from the brightest direct sunlight to the deepest darkest shadows.</li>
  <li><a href="http://www.imagemagick.org/www/cipher.html">Encipher or decipher an image</a>: convert ordinary images into unintelligible gibberish and back again.</li>
  <li><a href="architecture.html#virtual-pixels">Virtual pixel support</a>: convenient access to pixels outside the image region.</li>
  <li><a href="architecture.html#tera-pixel">Large image support</a>: read, process, or write mega-, giga-, or tera-pixel image sizes.</li>
  <li><a href="architecture.html#threads">Threads of execution support</a>: ImageMagick is thread safe and most internal algorithms execute in <a href="openmp.html">parallel</a> to take advantage of speed-ups offered by multicore processor chips.</li>
  <li><a href="distribute-pixel-cache.html">Distributed pixel cache</a>: offload intermediate pixel storage to one or more remote servers.</li>
  <li><a href="architecture.html#distributed">Heterogeneous distributed processing</a>: certain algorithms are <a href="opencl.html">OpenCL</a>-enabled to take advantage of speed-ups offered by executing in concert across heterogeneous platforms consisting of CPUs, GPUs, and other processors.</li>
  <li><a href="binary-releases.html#iOS">ImageMagick on the iPhone</a>: convert, edit, or compose images on your <a href="http://www.apple.com/ios/">iOS</a> device such as the iPhone or iPad.</li>
</ul>

<p><a href="http://www.imagemagick.org/Usage/">Examples of ImageMagick Usage</a> shows how to use ImageMagick from the command-line to accomplish any of these tasks and much more. Also, see <a href="http://www.fmwconcepts.com/imagemagick/">Fred's ImageMagick Scripts</a>:  a plethora of command-line scripts that perform geometric transforms, blurs, sharpens, edging, noise removal, and color manipulations.</p>
</div>

<h2><a id="news"></a>ImageMagick News</h2>
<div class="doc-section">

<p>The design of ImageMagick is an evolutionary process, with the design and implementation efforts serving to influence and guide further progress in the other.  With <a href="ImageMagick-7.0.0">ImageMagick version 7</a>, we aim to improve the design based on lessons learned from the version 6 implementation.  See the <a href="porting.html">porting</a> guide to track the progress of the version 7 development effort.</p>
</div>

<h2><a id="books"></a>Books About ImageMagick</h2>
<div class="doc-section">
<p><a href="http://www.amazon.com/exec/obidos/redirect?link_code=ur2&amp;camp=1789&amp;tag=imagemagick-20&amp;creative=9325&amp;path=tg/detail/-/1590595904/qid=1123551819/sr=8-1/ref=pd_bbs_sbs_1?v=glance%26s=books%26n=507846"><img alt="Definitive Guide to ImageMagick" class="icon" width="100" height="136" src="definitive-guide.png"/></a> An open source project backed by years of continual development, ImageMagick supports about 100 image formats and can perform impressive operations such as creating images from scratch; changing colors; stretching, rotating, and overlaying images; and overlaying text on images. Whether you use ImageMagick to manage the family photos or to embark on a job involving millions of images, this book provides you with the knowledge to manage your images with ease.<br /><br />The <em>Definitive Guide to ImageMagick</em> explains all of these capabilities and more in a practical, learn-by-example fashion. You'll get comfortable using ImageMagick for any image-processing task. Through the book's coverage of the ImageMagick interfaces for C, Perl, PHP, and Ruby, you'll learn how to incorporate ImageMagick features into a variety of applications.</p><br />

<p><a href="http://www.amazon.com/exec/obidos/redirect?link_code=ur2&amp;camp=1789&amp;tag=imagemagick-20&amp;creative=9325&amp;path=tg/detail/-/1904811868/qid=1123551819/sr=8-1/ref=pd_bbs_sbs_1?v=glance%26s=books%26n=507846"><img alt="ImageMagick Tricks" class="icon" width="100" height="123" src="tricks.png"/></a> <em>ImageMagick Tricks</em> by Sohail Salehi: This fast-paced and practical tutorial is packed with examples of photo manipulations, logo creation, animations, and complete web projects. With this book up your sleeve, you'll be creating spellbinding images from code in no time. The publisher, <a href="http://www.packtpub.com/">Packt</a>, is donating a percentage of every book sold to the ImageMagick project.</p><br />
</div>

<h2><a id="community"></a>User Community</h2>
<div class="doc-section">
<p>To join the ImageMagick user community, try the <a href="discourse-server">discourse server</a>.  You can review questions or comments (with informed responses) posed by ImageMagick users or ask your own questions.</p>
</div>

</div>

<div id="linkbar">
    <span id="linkbar-west"> </span>

    <span id="linkbar-center">
      <a href="discourse-server">Discourse Server</a> •
      <a href="http://pgp.mit.edu:11371/pks/lookup?op=get&amp;search=0x89AB63D48277377A">Public Key</a> •
      <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a> •
      <a href="http://jqmagick.imagemagick.org/">JqMagick</a>
    </span>
    <span id="linkbar-east"> </span>
</div>
<div class="footer">
  <span id="footer-west">©  1999-2015 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>
<!-- Magick Cache 8th March 2015 08:23 -->