<!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="verify-v1" content="g222frIIxcQTrvDR3NBRUSKP3AnMNoqxOkIniCEkV7U="/>
  <title>ImageMagick: MagickCore, C API for ImageMagick: Get the Version and Copyrights</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="magickcore, c, api, for, imagemagick:, get, the, version, copyrights, 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">
<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="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: iPhone" href="../../www/binary-releases.html#iPhone">iPhone</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>

<a href="http://www.networkredux.com">
  <img src="../../images/networkredux.png" alt="[sponsor]"
  style="margin-top: 4px; margin-left: 4px; border: 0px; float: left;" /></a>
<div class="sponsbox">
<div  class="sponsor">
  <a title="Sponsor: Website Hosting" href="http://www.hostreviewgeeks.com">Website Hosting</a><!-- 201109010090 alexanian media -->
</div>
<div  class="sponsor">
  <a title="Sponsor: Druckerei" href="http://www.allesdruck.de">Druckerei</a><!-- 201303011500 r.leo -->
</div>
<div  class="sponsor">
  <a title="Sponsor: Hotel München" href="http://www.messehotel-erb-muenchen.de">Hotel München</a><!-- 201111010450 cerb -->
</div>
<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: Flyer drucken" href="http://www.online-druck.biz">Flyer drucken</a><!-- 201109010900 Floeter-->
</div>
<div  class="sponsor">
  <a title="Sponsor: Web Hosting Reviews" href="http://www.webhostingmasters.com">Web Hosting Reviews</a><!-- 201107011500 affliatelabel -->
</div>
<div  class="sponsor">
  <a title="Sponsor: Druckerei" href="http://print24.com/de/">Druckerei</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: Autoteile Online Shop" href="http://www.autoteile-carparts.de">Autoteile Online Shop</a><!-- 2011070100030 autoteile-Carparts-->
</div>
</div>
</div>
</div>

<div class="eastbar">

</div>

<div class="main">

<h1>Module version Methods</h1>
<p class="navigation-index">[<a href="#GetMagickCopyright">GetMagickCopyright</a> &bull; <a href="#GetMagickFeatures">GetMagickFeatures</a> &bull; <a href="#GetMagickHomeURL">GetMagickHomeURL</a> &bull; <a href="#GetMagickPackageName">GetMagickPackageName</a> &bull; <a href="#GetMagickQuantumDepth">GetMagickQuantumDepth</a> &bull; <a href="#GetMagickQuantumRange">GetMagickQuantumRange</a> &bull; <a href="#GetMagickReleaseDate">GetMagickReleaseDate</a> &bull; <a href="#GetMagickVersion">GetMagickVersion</a>]</p>

<h2><a href="http://www.imagemagick.org/api/MagickCore/version_8c.html" id="GetMagickCopyright">GetMagickCopyright</a></h2>
<div class="doc-section">

<p>GetMagickCopyright() returns the ImageMagick API copyright as a string.</p>

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

<pre class="code">
  const char *GetMagickCopyright(void)
</pre>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickCore/version_8c.html" id="GetMagickFeatures">GetMagickFeatures</a></h2>
<div class="doc-section">

<p>GetMagickFeatures() returns the ImageMagick features.</p>

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

<pre class="code">
  const char *GetMagickFeatures(void)
</pre>

<p>No parameters are required.</p>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickCore/version_8c.html" id="GetMagickHomeURL">GetMagickHomeURL</a></h2>
<div class="doc-section">

<p>GetMagickHomeURL() returns the ImageMagick home URL.</p>

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

<pre class="code">
  char *GetMagickHomeURL(void)
</pre>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickCore/version_8c.html" id="GetMagickPackageName">GetMagickPackageName</a></h2>
<div class="doc-section">

<p>GetMagickPackageName() returns the ImageMagick package name.</p>

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

<pre class="code">
  const char *GetMagickName(void)
</pre>

<p>No parameters are required.</p>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickCore/version_8c.html" id="GetMagickQuantumDepth">GetMagickQuantumDepth</a></h2>
<div class="doc-section">

<p>GetMagickQuantumDepth() returns the ImageMagick quantum depth.</p>

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

<pre class="code">
  const char *GetMagickQuantumDepth(size_t *depth)
</pre>

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

<h5>depth</h5>
<p>the quantum depth is returned as a number.</p>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickCore/version_8c.html" id="GetMagickQuantumRange">GetMagickQuantumRange</a></h2>
<div class="doc-section">

<p>GetMagickQuantumRange() returns the ImageMagick quantum range.</p>

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

<pre class="code">
  const char *GetMagickQuantumRange(size_t *range)
</pre>

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

<h5>range</h5>
<p>the quantum range is returned as a number.</p>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickCore/version_8c.html" id="GetMagickReleaseDate">GetMagickReleaseDate</a></h2>
<div class="doc-section">

<p>GetMagickReleaseDate() returns the ImageMagick release date.</p>

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

<pre class="code">
  const char *GetMagickReleaseDate(void)
</pre>

<p>No parameters are required.</p>

 </div>
<h2><a href="http://www.imagemagick.org/api/MagickCore/version_8c.html" id="GetMagickVersion">GetMagickVersion</a></h2>
<div class="doc-section">

<p>GetMagickVersion() returns the ImageMagick API version as a string and as a number.</p>

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

<pre class="code">
  const char *GetMagickVersion(size_t *version)
</pre>

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

<h5>version</h5>
<p>the ImageMagick version is returned as a number.</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>
