<!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: Count the Colors in an Image</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:, count, the, colors, in, an, image, 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: 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>

<div class="sponsbox">
<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: Website Hosting" href="http://www.hostreviewgeeks.com">Website Hosting</a><!-- 201106010090 alexanian media -->
</div>
<div  class="sponsor">
  <a title="Sponsor: Druckerei" href="http://www.allesdruck.de">Druckerei</a><!-- 201107010240 r.leo -->
</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: Web Hosting Ratings" href="http://webhostingrating.com">Web Hosting Ratings</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" href="http://www.bodhost.com/hosting.shtml">Web Hosting</a><!-- 201104010090 -->
</div>
<div  class="sponsor">
  <a title="Sponsor: Druckerei" href="http://print24.com/de/">Druckerei</a><!-- 201110010720 -->
</div>
<div  class="sponsor">
   <a title="Sponsor: Webdesign" href="http://www.renehornig.com/">Webdesign</a><!-- 20111001000240 -->
</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 color Methods</h1>
<p class="navigation-index">[<a href="#GetColorInfoList">GetColorInfoList</a> &bull; <a href="#GetColorList">GetColorList</a> &bull; <a href="#ListColorInfo">ListColorInfo</a> &bull; <a href="#LoadColorList">LoadColorList</a> &bull; <a href="#QueryColorDatabase">QueryColorDatabase</a> &bull; <a href="#QueryColorDatabase">QueryColorDatabase</a> &bull; <a href="#QueryColorname">QueryColorname</a> &bull; <a href="#QueryMagickColorCompliance">QueryMagickColorCompliance</a> &bull; <a href="#QueryMagickColor">QueryMagickColor</a> &bull; <a href="#QueryMagickColorname">QueryMagickColorname</a>]</p>

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

<p>GetColorInfoList() returns any colors that match the specified pattern.</p>

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

<pre class="text">
  const ColorInfo **GetColorInfoList(const char *pattern,
    size_t *number_colors,ExceptionInfo *exception)
</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_colors</h5>
<p>This integer returns the number of colors in the list.</p>

<h5>exception</h5>
<p>return any errors or warnings in this structure.</p>

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

<p>GetColorList() returns any colors that match the specified pattern.</p>

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

<pre class="text">
  char **GetColorList(const char *pattern,size_t *number_colors,
    ExceptionInfo *exception)
</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_colors</h5>
<p>This integer returns the number of colors in the list.</p>

<h5>exception</h5>
<p>return any errors or warnings in this structure.</p>

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

<p>ListColorInfo() lists color names to the specified file.  Color names are a convenience.  Rather than defining a color by its red, green, and blue intensities just use a color name such as white, blue, or yellow.</p>

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

<pre class="code">
  MagickBooleanType ListColorInfo(FILE *file,ExceptionInfo *exception)
</pre>

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

<h5>file</h5>
<p>List color names to this file handle.</p>

<h5>exception</h5>
<p>return any errors or warnings in this structure.</p>

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

<p>LoadColorList() loads one or more color configuration file which provides a mapping between color attributes and a color name.</p>

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

<pre class="code">
  MagickBooleanType LoadColorLists(const char *filename,
    ExceptionInfo *exception)
</pre>

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

<h5>filename</h5>
<p>the font file name.</p>

<h5>exception</h5>
<p>return any errors or warnings in this structure.</p>

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

<p>QueryColorDatabase() returns the red, green, blue, and opacity intensities for a given color name.</p>

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

<pre class="code">
  MagickBooleanType QueryColorDatabase(const char *name,
    const ComplianceType compliance,PixelPacket *color,
    ExceptionInfo *exception)
</pre>

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

<h5>name</h5>
<p>the color name (e.g. white, blue, yellow).</p>

<h5>compliance</h5>
<p>Adhere to this color standard: SVG, X11, or XPM.</p>

<h5>color</h5>
<p>the red, green, blue, and opacity intensities values of the named color in this structure.</p>

<h5>exception</h5>
<p>return any errors or warnings in this structure.</p>

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

<p>QueryColorDatabase() returns the red, green, blue, and opacity intensities for a given color name.</p>

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

<pre class="code">
  MagickBooleanType QueryColorDatabase(const char *name,PixelPacket *color,
    ExceptionInfo *exception)
</pre>

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

<h5>name</h5>
<p>the color name (e.g. white, blue, yellow).</p>

<h5>color</h5>
<p>the red, green, blue, and opacity intensities values of the named color in this structure.</p>

<h5>exception</h5>
<p>return any errors or warnings in this structure.</p>

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

<p>QueryColorname() returns a named color for the given color intensity.  If an exact match is not found, a rgb() color is returned instead.</p>

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

<pre class="code">
  MagickBooleanType QueryColorname(const Image *image,
    const PixelPacket *color,const ComplianceType compliance,char *name,
    ExceptionInfo *exception)
</pre>

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

<h5>image</h5>
<p>the image.</p>

<h5>color</h5>
<p>the color intensities.</p>

<h5>compliance</h5>
<p>Adhere to this color standard: SVG, X11, or XPM.</p>

<h5>name</h5>
<p>Return the color name or hex value.</p>

<h5>exception</h5>
<p>return any errors or warnings in this structure.</p>

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

<p>QueryMagickColorCompliance() returns the red, green, blue, and opacity intensities for a given color name and standards compliance.</p>

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

<pre class="code">
  MagickBooleanType QueryMagickColor(const char *name,
    const ComplianceType compliance,MagickPixelPacket *color,
    ExceptionInfo *exception)
</pre>

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

<h5>name</h5>
<p>the color name (e.g. white, blue, yellow).</p>

<h5>compliance</h5>
<p>Adhere to this color standard: SVG, X11, or XPM.</p>

<h5>color</h5>
<p>the red, green, blue, and opacity intensities values of the named color in this structure.</p>

<h5>exception</h5>
<p>return any errors or warnings in this structure.</p>

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

<p>QueryMagickColor() returns the red, green, blue, and opacity intensities for a given color name.</p>

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

<pre class="code">
  MagickBooleanType QueryMagickColor(const char *name,
    MagickPixelPacket *color,ExceptionInfo *exception)
</pre>

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

<h5>name</h5>
<p>the color name (e.g. white, blue, yellow).</p>

<h5>color</h5>
<p>the red, green, blue, and opacity intensities values of the named color in this structure.</p>

<h5>exception</h5>
<p>return any errors or warnings in this structure.</p>

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

<p>QueryMagickColorname() returns a named color for the given color intensity. If an exact match is not found, a hex value is returned instead.  For example an intensity of rgb:(0,0,0) returns black whereas rgb:(223,223,223) returns #dfdfdf.</p>

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

<pre class="code">
  MagickBooleanType QueryMagickColorname(const Image *image,
    const PixelPacket *color,const ComplianceType compliance,char *name,
    ExceptionInfo *exception)
</pre>

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

<h5>image</h5>
<p>the image.</p>

<h5>color</h5>
<p>the color intensities.</p>

<h5>Compliance</h5>
<p>Adhere to this color standard: SVG, X11, or XPM.</p>

<h5>name</h5>
<p>Return the color name or hex value.</p>

<h5>exception</h5>
<p>return any errors or warnings in this structure.</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>
