<!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="MxsMq6bdLOx0KSuz1MY6yG9ZTIJ7_7DVRfl5NCAT5Yg"/>
  <title>ImageMagick: Sponsors</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 automagically."/>
  <meta name="application-url" content="http://www.imagemagick.org"/>
  <meta name="generator" content="PHP"/>
  <meta name="keywords" content="sponsors, 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>
  
  <!-- Optionaly include easing and/or mousewheel plugins -->
  <script type="text/javascript" src="http://www.imagemagick.org/fancybox/jquery.easing-1.3.pack.js"></script>
  <script type="text/javascript" src="http://www.imagemagick.org/fancybox/jquery.mousewheel-3.0.6.pack.js"></script>
  
  <!-- Add fancyBox -->
  <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/jquery.fancybox.css?v=2.0.4" type="text/css" media="screen" />
  <script type="text/javascript" src="http://www.imagemagick.org/fancybox/jquery.fancybox.pack.js?v=2.0.4"></script>
  
  <!-- Optionaly include button and/or thumbnail helpers -->
  <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/helpers/jquery.fancybox-buttons.css?v=2.0.4" type="text/css" media="screen" />
  <script type="text/javascript" src="http://www.imagemagick.org/fancybox/helpers/jquery.fancybox-buttons.js?v=2.0.4"></script>
  
  <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/helpers/jquery.fancybox-thumbs.css?v=2.0.4" type="text/css" media="screen" />
  <script type="text/javascript" src="http://www.imagemagick.org/fancybox/helpers/jquery.fancybox-thumbs.js?v=2.0.4"></script>
  <script type="text/javascript">
  	$(document).ready(function() {
  		$(".fancybox").fancybox();
  	});
  </script>
  <!-- ImageMagick style -->
  <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>
</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="../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 rel="follow" title="Sponsors" href="sponsors.html">Sponsors:</a>

  <a href="http://www.networkredux.com"> <img src="../images/networkredux.png" width="140" height="31" alt="[sponsor]" style="margin-top: 4px; margin-left: 4px; border: 0px; float: left;" /></a>
  <a href="http://www.dinodirect.com/ipads-tablets/"> <img src="../images/dino-direct.jpg" width="140" height="90" alt="[sponsor]" style="margin-top: 4px; margin-left: 4px; border: 0px; float: left;" /></a><!-- 201208010120 mickey@163... -->
<div class="sponsbox">
<div class="sponsor">
  <a rel="follow" title="Sponsor: The Fastest &amp; Easiest Way to Find Images" href="http://www.graphicsfactory.com">The Fastest &amp; Easiest Way to Find Images</a><!-- 201210010270 graphicsfac... -->
</div>
<div class="sponsor">
  <a rel="follow" title="Sponsor: VPS" href="http://www.interdominios.com/vps">VPS</a><!-- 201209010090 barsh@inter... -->
</div>
<div class="sponsor">
  <a rel="follow" title="Werbebanner Werbeplane" href="http://www.allesbanner.de">Werbebanner Werbeplane</a><!-- 201212010450 info@druck... -->
</div>
<div class="sponsor">
  <a rel="follow" title="Entertainment News &amp; Photos" href="http://www.zimbio.com">Entertainment News &amp; Photos</a><!-- 201211010540 bd@zimb... -->
</div>
<div class="sponsor">
  <a rel="follow" title="Sponsor: LED24" href="http://led24.de/">LED24</a><!-- 201207010270 info@led24... -->
</div>
<div class="sponsor">
  <a rel="follow" title="Sponsor: Best Website Hosting" href="http://www.top-cheap-web-hosting.com">Best Website Hosting</a><!-- 201304010090 eunge.liu-->
</div>
<div class="sponsor">
  <a rel="follow" title="Android Tablet" href="http://www.dinodirect.com/ipads-tablets/">Android Tablet</a><!-- 201208010120 mickey@163... -->
</div>
<div class="sponsor">
  <a rel="follow" title="Sponsor: Web Site Hosting" href="http://webhostinggeeks.com">Web Site Hosting</a><!-- 201302010900 funds@enmob... -->
</div>
<div class="sponsor">
   <a rel="follow" title="Sponsor: Premium Quality Stock Photos" href="http://www.f1online.pro/en/">Premium Quality Stock Photos</a><!-- 2012080100540 ... -->
</div>
<div class="sponsor">
   <a rel="follow" title="Sponsor: Druckerei" href="http://print24.com/de/">Druckerei</a><!-- 2012070100250 ... -->
</div>
<div class="sponsor">
  <a rel="follow" title="Sponsor: Managed Server" href="http://www.robhost.de">Managed Server</a><!-- 201210010720 klikics... -->
</div>
<div class="sponsor">
  <a rel="follow" title="Sponsor: Druckerei" href="http://www.allesdruck.de">Druckerei</a><!-- 201303011500 r.leo -->
</div>
<div class="sponsor">
   <a rel="follow" title="Sponsor: Notebook Reparatur" href="http://www.notebook-reparaturen-berlin.de">Notebook Reparatur</a><!-- 2012080100300 atlas-multimedia-->
</div>
<div class="sponsor">
   <a rel="follow" title="Sponsor: Fototapete - Tapetendruck" href="http://www.druck-expert.com/Fototapete-Tapetendruck,category,8830.html">Fototapete - Tapetendruck</a><!-- 2012100100155 info@druck-->
</div>
</div>
</div>
</div>

<div class="eastbar">
  <div class="g-plusone" id="gplusone"></div>
  <script type="text/javascript">
    window.___gcfg = {
      lang: 'en-US'
    };

    (function() {
      var po = document.createElement('script');
      po.type = 'text/javascript'; po.async = true;
      po.src = 'https://apis.google.com/js/plusone.js';
      var script = document.getElementsByTagName('script')[0];
      script.parentNode.insertBefore(po, script);
    })();
    var gplusone = document.getElementById("gplusone");
    gplusone.setAttribute("data-size","medium");
    gplusone.setAttribute("data-count","false");
  </script>
</div>

<div class="main">

<h1>ImageMagick Sponsors</h1>
<p class="navigation-index">[<a href="sponsors.html#sponsor">Active ImageMagick Sponsors</a> &bull; <a href="sponsors.html#support">Support the ImageMagick Project</a>]</p>


<a id="sponsor"></a>
<h2>Active ImageMagick Sponsors</h2>
<div class="doc-section">

<p>We want to thank the sponsors of the ImageMagick project, including:</p>

<dl>
  <dd><a rel="follow" title="Android Tablet" href="http://www.dinodirect.com/ipads-tablets/">Android Tablet</a></dd>
  <dd><a rel="follow" title="Best Web Hosting" href="http://www.webhostingclue.com">Best Web Hosting</a></dd>
  <dd><a rel="follow" title="Best Website Hosting" href="http://www.top-cheap-web-hosting.com">Best Website Hosting</a></dd>
  <dd><a rel="follow" title="Druckerei" href="http://print24.com/de/">Druckerei</a></dd>
  <dd><a rel="follow" title="Druckerei" href="http://www.allesdruck.de">Druckerei</a></dd>
  <dd><a rel="follow" title="Entertainment News &amp; Photos" href="http://www.zimbio.com">Entertainment News &amp; Photos</a></dd>
  <dd><a rel="follow" title="Fernsehdienst Berlin" href="http://www.atlas-multimedia.de">Fernsehdienst Berlin</a></dd>
  <dd><a rel="follow" title="Fototapete - Tapetendruck" href="http://www.druck-expert.com/Fototapete-Tapetendruck,category,8830.html">Fototapete - Tapetendruck</a></dd>
  <dd><a rel="follow" title="Free Catalogs" href="http://www.who-sells-it.com/">Free Catalogs</a></dd>
  <dd><a rel="follow" title="Got Stripes" href="http://www.stripeslawncare.org">Got Stripes?</a></dd>
  <dd><a rel="follow" title="Kaffeevollautomaten Reparatur Kundendienst Berlin" href="http://www.kaffeemaschinen-center.de">Kaffeevollautomaten Reparatur Berlin</a></dd>
  <dd><a rel="follow" title="LED24" href="http://led24.de">LED24</a></dd>
  <dd><a rel="follow" title="Managed Server" href="http://www.robhost.de">Managed Server</a></dd>
  <dd><a rel="follow" title="Names List" href="http://www.listofnames.info">Names List</a></dd>
  <dd><a rel="follow" title="Notebook Reparatur" href="http://www.notebook-reparaturen-berlin.de">Notebook Reparatur</a></dd>
  <dd><a rel="follow" title="Open Source Hosting" href="http://www.networkredux.com">Open Source Hosting</a></dd>
  <dd><a rel="follow" title="Premium Quality Stock Photos" href="http://www.f1online.pro/en/">Premium Quality Stock Photos</a></dd>
  <dd><a rel="follow" title="The Fastest &amp; Easiest Way to Find Images" href="http://www.graphicsfactory.com">The Fastest &amp; Easiest Way to Find Images</a></dd>
  <dd><a rel="follow" title="VPS" href="http://www.interdominios.com/vps">VPS</a></dd>
  <dd><a rel="follow" title="Waschmaschinen Reparatur Berlin" href="http://www.waschmaschinen-reparaturen-berlin.de">Waschmaschinen Reparatur Berlin</a></dd>
  <dd><a rel="follow" title="Web Hosting" href="http://www.hostucan.com">Web Hosting</a></dd>
  <dd><a rel="follow" title="Web Site Hosting" href="http://webhostinggeeks.com">Web Site Hosting</a></dd>
  <dd><a rel="follow" title="Werbebanner Werbeplane" href="http://www.allesbanner.de">Werbebanner Werbeplane</a></dd>
</dl>

</div>

<h2><a id="support"></a>Support the ImageMagick Project</h2>
<div class="doc-section">

<p>ImageMagick has been freely available since the early 1990's. It has consistently been one of the most comprehensive free image processing packages available, but, unlike competing packages, it continues to be supported and enhanced.  Today, ImageMagick is more comprehensive and better supported than ever.</p>
<p>ImageMagick has enjoyed considerable support from commercial users. Since ImageMagick is not restricted from use in commercial or proprietary applications, it is used to support thousands of commercial web sites and is used in professional digital image and movie studios as well as publishing shops. It is also used as a component of a number of commercial applications. Many of these commercial users have made contributions to ImageMagick, large and small, often anonymous, but always appreciated.</p>
<p>ImageMagick Studio LLC is now looking for sponsorship from individuals and companies which use ImageMagick, or which would like to help support free software. If you or your company depends on ImageMagick, sponsoring ImageMagick is a way to express your gratitude and to contribute back to the further development of ImageMagick.</p>
<p>ImageMagick sponsorship can take many forms. The following are some possibilities:</p>
<ul>
<li>Contribute source code or patches to help improve ImageMagick.</li>
<li>Send us a licensed copy of Microsoft Visual Studio 2010.</li>
<li>Send us a licensed copy of Adobe Photoshop.</li>
<li>Lend us developers to add support for additional image formats or to finish integrating support for the SVG specification.</li>
<li>Provide technical writers to assist with the development of commercial-grade technical documentation.</li>
<li>Donate a quality SWOP or Eurostandard ICC profile to use as a default CMYK to RGB conversion profile.</li>
<li>Donate a workstation with a modern processor and plenty of memory and disk.  We would use it for our primary development environment.</li>
<li>Donate an Apple Macbook Pro or desktop so we can build and test ImageMagick in the Apple Development environment.</li>
<li>Help us produce an error-free ImageMagick run-time environment with the donation of Purify, BoundsChecker, or Insure++.</li>
<li>Produce ImageMagick DVDs for distribution.</li>
<li>Make a monetary contribution:</li></ul>


<fieldset>
<legend>Support the ImageMagick Project</legend>
<p>Sponsorships can be anonymous, or public. We are willing to provide recognition for significant sponsorships, and can provide links to the sponsor's web site. We reserve the right to refuse a sponsorship if we deem the site being sponsored as having inappropriate content. For direct monetary contributions, click on the donate button to contribute thru Paypal or with a credit card:</p>

<p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="E4UZGVA6PU7RC">
<input type="image" src="../images/donate.png" border="0" name="submit" alt="Support ImageMagick" width="92" height="26">
</form>
</p>

<p>or send a check or money order in US funds to</p>
<pre class="text">
  ImageMagick Studio LLC
  P.O. Box 40
  Landenberg, PA  19350
  USA
</pre>
</fieldset>

<p>Donate $25 USD and we acknowledge your gift with a <a href="t-shirt.html">logoed t-shirt</a> (you must request the shirt to receive it).</p>

<p>If you prefer a recurring subscription or if you have any questions about sponsoring ImageMagick, please <a href="contact.html">contact us</a>.
</p>


</div>

</div>

<div id="linkbar">
    <span id="linkbar-west">&nbsp;</span>
    <span id="linkbar-center">
      <a href="../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-2012 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>
  <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>
