<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
  <meta name="verify-v1" content="g222frIIxcQTrvDR3NBRUSKP3AnMNoqxOkIniCEkV7U="/>
  <title>ImageMagick: MagickWand, C API for ImageMagick: Wand Methods</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 and transform images."/>
  <meta name="Application-url" content="http://www.imagemagick.org"/>
  <meta name="Generator" content="PHP"/>
  <meta name="Keywords" content="magickwc, api, for, imagemagick:, wmethods, ImageMagick, ImageMagic, MagickCore, MagickWand, PerlMagick, Magick++, RMagick, PythonMagick, JMagick, TclMagick, Image, Magick, Magic, Wand, ImageMagickObject, Swiss, Army, Knife, Image, Processing"/>
  <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-2011 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="meta" type="application/rdf+xml" title="ICI" href="http://imagemagick.org/ici.rdf"/>
  <link rel="stylesheet" href="http://www.google.com/cse/style/look/default.css" type="text/css" />
  <style type="text/css" media="all">
    @import url("../../www/magick.css");
  </style>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
  <script type="text/javascript" src="../fancybox/jquery.fancybox-1.3.4.pack.js"></script>
  <link rel="stylesheet" type="text/css" href="../fancybox/jquery.fancybox-1.3.4.css" media="screen" />
  <script type="text/javascript">
    $(document).ready(function() {
      $("a[href$=.jpg],a[href$=.png],a[href$=.gif]").fancybox({
        'transitionIn'  : 'elastic',
        'transitionOut' : 'elastic',
        'overlayShow'   : false,
        'opacity'       : true
      });
    });
  </script>
</head>

<body id="www-imagemagick-org">
<div class="titlebar">
<a href="../../index.html">
  <img src="../../images/script.png" alt="[ImageMagick]"
  style="width: 350px; height: 60px; margin: 28px auto; float: left;" /></a>
<a href="http://www.networkredux.com">
  <img src="../../images/networkredux.png" alt="[sponsor]"
  style="margin-top: 42px; border: 0px; float: left;" /></a>
<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="sep"></div>
<div class="menu">
  <a title="Binary Releases" href="../../www/binary-releases.html">Binary Releases</a>
</div>
<div class="sub">
    <a title="Binary Release: Unix" href="../../www/binary-releases.html#unix">Unix</a>
</div>
<div class="sub">
    <a title="Binary Release: MacOS X" href="../../www/binary-releases.html#macosx">Mac OS X</a>
</div>
<div class="sub">
    <a title="Binary Release: Windows" href="../../www/binary-releases.html#windows">Windows</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a title="Command-line Tools" href="../../www/command-line-tools.html">Command-line Tools</a>
</div>
<div class="sub">
    <a title="Command-line Tools: Processing" href="../../www/command-line-processing.html">Processing</a>
</div>
<div class="sub">
    <a title="Command-line Tools: Options" href="../../www/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="../../www/api.html">Program Interfaces</a>
</div>
<div class="sub">
    <a title="Program Interface: MagickWand" href="../../www/magick-wand.html">MagickWand</a>
</div>
<div class="sub">
    <a title="Program Interface: MagickCore" href="../../www/magick-core.html">MagickCore</a>
</div>
<div class="sub">
    <a title="Program Interface: PerlMagick" href="../../www/perl-magick.html">PerlMagick</a>
</div>
<div class="sub">
    <a title="Program Interface: Magick++" href="../../www/magick++.html">Magick++</a>
</div>
<div class="sep"></div>
<div  class="menu">
   <a title="Install from Source" href="../../www/install-source.html">Install from Source</a>
</div>
<div class="sub">
    <a title="Install from Source: Unix" href="../../www/install-source.html#unix">Unix</a>
</div>
<div class="sub">
    <a title="Install from Source: Windows" href="../../www/install-source.html#windows">Windows</a>
 </div>
<div class="menu">
  <a title="Resources" href="../../www/resources.html">Resources</a>
</div>
<div class="menu">
  <a title="Architecture" href="../../www/architecture.html">Architecture</a>
</div>
<div class="menu">
  <a title="Download" href="../../www/download.html">Download</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a title="Search" href="../../www/search.html">Search</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a title="Site Map" href="../../www/sitemap.html">Site Map</a>
</div>
<div  class="sub">
  <a title="Site Map: Links" href="../../www/links.html">Links</a>
</div>
<div class="sep"></div>
<div  class="menu">
  <a title="Sponsors" href="../../www/sponsors.html">Sponsors:</a>

<div class="sponsbox">
<div  class="sponsor">
  <a title="Sponsor: Best Web Hosting" href="http://webhostinggeeks.com">Best Web Hosting</a><!-- 201110010720 -->
</div>
<div  class="sponsor">
  <a title="Sponsor: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</a><!-- 201110010720 -->
</div>
<div  class="sponsor">
  <a title="Sponsor: Druckerei" href="http://www.allesdruck.de">Druckerei</a><!-- 201106010240 -->
</div>
<div class="sponsor">
  <a title="Sponsor: Web Hosting" href="http://www.bodhost.com/hosting.shtml">Web Hosting</a><!-- 201104010090 -->
</div>
<div  class="sponsor">
  <a title="Sponsor: Image Converter" href="http://www.batchphoto.com">Image Converter</a><!-- 201103010900 Bits Coffee-->
</div>
<div  class="sponsor">
  <a title="Sponsor: Flyer drucken" href="http://www.online-druck.biz">Flyer drucken</a><!-- 201109010900 Floeter-->
</div>
<div  class="sponsor">
  <a title="Sponsor: Druckerei" href="http://print24.com/de/">Druckerei</a><!-- 201110010720 -->
</div>
<div  class="sponsor">
   <a title="Sponsor: Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a><!-- 20120801000600 -->
</div>
</div>
</div>
</div>

<div class="eastbar">
  <script type="text/javascript">
  <!--
    google_ad_client = "pub-3129977114552745";
    google_ad_slot = "0574824969";
    google_ad_width = 160;
    google_ad_height = 600;
  //-->
  </script>
  <script type="text/javascript"
    src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
  </script>
</div>

<div class="main">

<h1>Module magick-wand
 Methods</h1>
<p class="navigation-index">[<a href="#ClearMagickWand">ClearMagickWand</a> &bull; <a href="#CloneMagickWand">CloneMagickWand</a> &bull; <a href="#DestroyMagickWand">DestroyMagickWand</a> &bull; <a href="#IsMagickWand">IsMagickWand</a> &bull; <a href="#MagickClearException">MagickClearException</a> &bull; <a href="#MagickGetException">MagickGetException</a> &bull; <a href="#MagickGetExceptionType">MagickGetExceptionType</a> &bull; <a href="#MagickGetIteratorIndex">MagickGetIteratorIndex</a> &bull; <a href="#MagickQueryConfigureOption">MagickQueryConfigureOption</a> &bull; <a href="#MagickQueryConfigureOptions">MagickQueryConfigureOptions</a> &bull; <a href="#MagickQueryFontMetrics">MagickQueryFontMetrics</a> &bull; <a href="#MagickQueryMultilineFontMetrics">MagickQueryMultilineFontMetrics</a> &bull; <a href="#MagickQueryFonts">MagickQueryFonts</a> &bull; <a href="#MagickQueryFonts">MagickQueryFonts</a> &bull; <a href="#MagickRelinquishMemory">MagickRelinquishMemory</a> &bull; <a href="#MagickResetIterator">MagickResetIterator</a> &bull; <a href="#MagickSetFirstIterator">MagickSetFirstIterator</a> &bull; <a href="#MagickSetIteratorIndex">MagickSetIteratorIndex</a> &bull; <a href="#MagickSetLastIterator">MagickSetLastIterator</a> &bull; <a href="#MagickWandGenesis">MagickWandGenesis</a> &bull; <a href="#MagickWandTerminus">MagickWandTerminus</a> &bull; <a href="#NewMagickWand">NewMagickWand</a> &bull; <a href="#NewMagickWandFromImage">NewMagickWandFromImage</a>]</p>

<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="ClearMagickWand">ClearMagickWand</a></h2>
<div class="doc-section">

<p>ClearMagickWand() clears resources associated with the wand.</p>

<p>The format of the ClearMagickWand method is:</p>

<pre class="code">
  void ClearMagickWand(MagickWand *wand)
</pre>

<p>A description of each parameter follows:</p>

<h5>wand</h5>
<p>the magick wand.</p>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="CloneMagickWand">CloneMagickWand</a></h2>
<div class="doc-section">

<p>CloneMagickWand() makes an exact copy of the specified wand.</p>

<p>The format of the CloneMagickWand method is:</p>

<pre class="code">
  MagickWand *CloneMagickWand(const MagickWand *wand)
</pre>

<p>A description of each parameter follows:</p>

<h5>wand</h5>
<p>the magick wand.</p>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="DestroyMagickWand">DestroyMagickWand</a></h2>
<div class="doc-section">

<p>DestroyMagickWand() deallocates memory associated with an MagickWand.</p>

<p>The format of the DestroyMagickWand method is:</p>

<pre class="code">
  MagickWand *DestroyMagickWand(MagickWand *wand)
</pre>

<p>A description of each parameter follows:</p>

<h5>wand</h5>
<p>the magick wand.</p>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="IsMagickWand">IsMagickWand</a></h2>
<div class="doc-section">

<p>IsMagickWand() returns MagickTrue if the wand is verified as a magick wand.</p>

<p>The format of the IsMagickWand method is:</p>

<pre class="code">
  MagickBooleanType IsMagickWand(const MagickWand *wand)
</pre>

<p>A description of each parameter follows:</p>

<h5>wand</h5>
<p>the magick wand.</p>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="MagickClearException">MagickClearException</a></h2>
<div class="doc-section">

<p>MagickClearException() clears any exceptions associated with the wand.</p>

<p>The format of the MagickClearException method is:</p>

<pre class="code">
  MagickBooleanType MagickClearException(MagickWand *wand)
</pre>

<p>A description of each parameter follows:</p>

<h5>wand</h5>
<p>the magick wand.</p>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="MagickGetException">MagickGetException</a></h2>
<div class="doc-section">

<p>MagickGetException() returns the severity, reason, and description of any error that occurs when using other methods in this API.</p>

<p>The format of the MagickGetException method is:</p>

<pre class="code">
  char *MagickGetException(const MagickWand *wand,ExceptionType *severity)
</pre>

<p>A description of each parameter follows:</p>

<h5>wand</h5>
<p>the magick wand.</p>

<h5>severity</h5>
<p>the severity of the error is returned here.</p>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="MagickGetExceptionType">MagickGetExceptionType</a></h2>
<div class="doc-section">

<p>MagickGetExceptionType() returns the exception type associated with the wand.  If no exception has occurred, UndefinedExceptionType is returned.</p>

<p>The format of the MagickGetExceptionType method is:</p>

<pre class="code">
  ExceptionType MagickGetExceptionType(const MagickWand *wand)
</pre>

<p>A description of each parameter follows:</p>

<h5>wand</h5>
<p>the magick wand.</p>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="MagickGetIteratorIndex">MagickGetIteratorIndex</a></h2>
<div class="doc-section">

<p>MagickGetIteratorIndex() returns the position of the iterator in the image list.</p>

<p>The format of the MagickGetIteratorIndex method is:</p>

<pre class="code">
  ssize_t MagickGetIteratorIndex(MagickWand *wand)
</pre>

<p>A description of each parameter follows:</p>

<h5>wand</h5>
<p>the magick wand.</p>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="MagickQueryConfigureOption">MagickQueryConfigureOption</a></h2>
<div class="doc-section">

<p>MagickQueryConfigureOption() returns the value associated with the specified configure option.</p>

<p>The format of the MagickQueryConfigureOption function is:</p>

<pre class="text">
  char *MagickQueryConfigureOption(const char *option)
</pre>

<p>A description of each parameter follows:</p>

<h5>option</h5>
<p>the option name.</p>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="MagickQueryConfigureOptions">MagickQueryConfigureOptions</a></h2>
<div class="doc-section">

<p>MagickQueryConfigureOptions() returns any configure options that match the specified pattern (e.g.  "*" for all).  Options include NAME, VERSION, LIB_VERSION, etc.</p>

<p>The format of the MagickQueryConfigureOptions function is:</p>

<pre class="text">
  char **MagickQueryConfigureOptions(const char *pattern,
    size_t *number_options)
</pre>

<p>A description of each parameter follows:</p>

<h5>pattern</h5>
<p>Specifies a pointer to a text string containing a pattern.</p>

<h5>number_options</h5>
<p>Returns the number of configure options in the list.</p>


 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="MagickQueryFontMetrics">MagickQueryFontMetrics</a></h2>
<div class="doc-section">

<p>MagickQueryFontMetrics() returns a 13 element array representing the following font metrics:</p>

<pre class="text">
      Element Description
      -------------------------------------------------
      0 character width
      1 character height
      2 ascender
      3 descender
      4 text width
      5 text height
      6 maximum horizontal advance
      7 bounding box: x1
      8 bounding box: y1
      9 bounding box: x2
     10 bounding box: y2
     11 origin: x
     12 origin: y
</pre>

<p>The format of the MagickQueryFontMetrics method is:</p>

<pre class="code">
  double *MagickQueryFontMetrics(MagickWand *wand,
    const DrawingWand *drawing_wand,const char *text)
</pre>

<p>A description of each parameter follows:</p>

<h5>wand</h5>
<p>the Magick wand.</p>

<h5>drawing_wand</h5>
<p>the drawing wand.</p>

<h5>text</h5>
<p>the text.</p>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="MagickQueryMultilineFontMetrics">MagickQueryMultilineFontMetrics</a></h2>
<div class="doc-section">

<p>MagickQueryMultilineFontMetrics() returns a 13 element array representing the following font metrics:</p>

<pre class="text">
      Element Description
      -------------------------------------------------
      0 character width
      1 character height
      2 ascender
      3 descender
      4 text width
      5 text height
      6 maximum horizontal advance
      7 bounding box: x1
      8 bounding box: y1
      9 bounding box: x2
     10 bounding box: y2
     11 origin: x
     12 origin: y
</pre>

<p>This method is like MagickQueryFontMetrics() but it returns the maximum text width and height for multiple lines of text.</p>

<p>The format of the MagickQueryFontMetrics method is:</p>

<pre class="code">
  double *MagickQueryMultilineFontMetrics(MagickWand *wand,
    const DrawingWand *drawing_wand,const char *text)
</pre>

<p>A description of each parameter follows:</p>

<h5>wand</h5>
<p>the Magick wand.</p>

<h5>drawing_wand</h5>
<p>the drawing wand.</p>

<h5>text</h5>
<p>the text.</p>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="MagickQueryFonts">MagickQueryFonts</a></h2>
<div class="doc-section">

<p>MagickQueryFonts() returns any font that match the specified pattern (e.g. "*" for all).</p>

<p>The format of the MagickQueryFonts function is:</p>

<pre class="text">
  char **MagickQueryFonts(const char *pattern,size_t *number_fonts)
</pre>

<p>A description of each parameter follows:</p>

<h5>pattern</h5>
<p>Specifies a pointer to a text string containing a pattern.</p>

<h5>number_fonts</h5>
<p>Returns the number of fonts in the list.</p>


 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="MagickQueryFonts">MagickQueryFonts</a></h2>
<div class="doc-section">

<p>MagickQueryFonts() returns any image formats that match the specified pattern (e.g.  "*" for all).</p>

<p>The format of the MagickQueryFonts function is:</p>

<pre class="text">
  char **MagickQueryFonts(const char *pattern,
    size_t *number_formats)
</pre>

<p>A description of each parameter follows:</p>

<h5>pattern</h5>
<p>Specifies a pointer to a text string containing a pattern.</p>

<h5>number_formats</h5>
<p>This integer returns the number of image formats in the list.</p>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="MagickRelinquishMemory">MagickRelinquishMemory</a></h2>
<div class="doc-section">

<p>MagickRelinquishMemory() relinquishes memory resources returned by such methods as MagickIdentifyImage(), MagickGetException(), etc.</p>

<p>The format of the MagickRelinquishMemory method is:</p>

<pre class="code">
  void *MagickRelinquishMemory(void *resource)
</pre>

<p>A description of each parameter follows:</p>

<h5>resource</h5>
<p>Relinquish the memory associated with this resource.</p>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="MagickResetIterator">MagickResetIterator</a></h2>
<div class="doc-section">

<p>MagickResetIterator() resets the wand iterator.  Use it in conjunction with MagickNextImage() to iterate over all the images in a wand container.</p>

<p>The format of the MagickResetIterator method is:</p>

<pre class="code">
  void MagickResetIterator(MagickWand *wand)
</pre>

<p>A description of each parameter follows:</p>

<h5>wand</h5>
<p>the magick wand.</p>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="MagickSetFirstIterator">MagickSetFirstIterator</a></h2>
<div class="doc-section">

<p>MagickSetFirstIterator() sets the wand iterator to the first image.</p>

<p>The format of the MagickSetFirstIterator method is:</p>

<pre class="code">
  void MagickSetFirstIterator(MagickWand *wand)
</pre>

<p>A description of each parameter follows:</p>

<h5>wand</h5>
<p>the magick wand.</p>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="MagickSetIteratorIndex">MagickSetIteratorIndex</a></h2>
<div class="doc-section">

<p>MagickSetIteratorIndex() set the iterator to the position in the image list specified with the index parameter.</p>

<p>The format of the MagickSetIteratorIndex method is:</p>

<pre class="code">
  MagickBooleanType MagickSetIteratorIndex(MagickWand *wand,
    const ssize_t index)
</pre>

<p>A description of each parameter follows:</p>

<h5>wand</h5>
<p>the magick wand.</p>

<h5>index</h5>
<p>the scene number.</p>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="MagickSetLastIterator">MagickSetLastIterator</a></h2>
<div class="doc-section">

<p>MagickSetLastIterator() sets the wand iterator to the last image.</p>

<p>The format of the MagickSetLastIterator method is:</p>

<pre class="code">
  void MagickSetLastIterator(MagickWand *wand)
</pre>

<p>A description of each parameter follows:</p>

<h5>wand</h5>
<p>the magick wand.</p>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="MagickWandGenesis">MagickWandGenesis</a></h2>
<div class="doc-section">

<p>MagickWandGenesis() initializes the MagickWand environment.</p>

<p>The format of the MagickWandGenesis method is:</p>

<pre class="code">
  void MagickWandGenesis(void)
</pre>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="MagickWandTerminus">MagickWandTerminus</a></h2>
<div class="doc-section">

<p>MagickWandTerminus() terminates the MagickWand environment.</p>

<p>The format of the MaickWandTerminus method is:</p>

<pre class="code">
  void MagickWandTerminus(void)
</pre>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="NewMagickWand">NewMagickWand</a></h2>
<div class="doc-section">

<p>NewMagickWand() returns a wand required for all other methods in the API.</p>

<p>The format of the NewMagickWand method is:</p>

<pre class="code">
  MagickWand *NewMagickWand(void)
</pre>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickWand/magick-wand
_8c.html" id="NewMagickWandFromImage">NewMagickWandFromImage</a></h2>
<div class="doc-section">

<p>NewMagickWandFromImage() returns a wand with an image.</p>

<p>The format of the NewMagickWandFromImage method is:</p>

<pre class="code">
  MagickWand *NewMagickWandFromImage(const Image *image)
</pre>

<p>A description of each parameter follows:</p>

<h5>image</h5>
<p>the image.</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>
    </span>
    <span id="linkbar-east">&nbsp;</span>
  </div>
  <div class="footer">
    <span id="footer-west">&copy; 1999-2011 ImageMagick Studio LLC</span>
    <span id="footer-east"> <a href="../http://www.imagemagick.org/script/contact.php">Contact the Wizards</a></span>
  </div>
  <div style="clear: both; margin: 0; width: 100%; "></div>
  <script type="text/javascript">
    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-17690367-1']);
    _gaq.push(['_trackPageview']);

    (function() {
      var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
      ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
      var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
    })();
  </script>
</body>
</html>
