]> granicus.if.org Git - imagemagick/blob - www/magick-wand.html
(no commit message)
[imagemagick] / www / magick-wand.html
1 \r
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" \r
3   "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
4 <html version="-//W3C//DTD XHTML 1.1//EN"\r
5       xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"\r
6       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
7       xsi:schemaLocation="http://www.w3.org/1999/xhtml\r
8                           http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd">\r
9 <head>\r
10   <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>\r
11   <meta name="google-site-verification" content="MxsMq6bdLOx0KSuz1MY6yG9ZTIJ7_7DVRfl5NCAT5Yg"/>\r
12   <title>ImageMagick: MagickWand, C API for ImageMagick</title>
13   <meta http-equiv="content-language" content="en-US"/>
14   <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
15   <meta http-equiv="reply-to" content="magick-users@imagemagick.org"/>
16   <meta name="application-name" content="ImageMagick"/>
17   <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."/>
18   <meta name="application-url" content="http://www.imagemagick.org"/>
19   <meta name="generator" content="PHP"/>
20   <meta name="keywords" content="magickwc, api, for, imagemagick, ImageMagick, PerlMagick, image processing, OpenMP, software development library, image, photo, software, Magick++, MagickWand"/>
21   <meta name="rating" content="GENERAL"/>
22   <meta name="robots" content="INDEX, FOLLOW"/>
23   <meta name="generator" content="ImageMagick Studio LLC"/>
24   <meta name="author" content="ImageMagick Studio LLC"/>
25   <meta name="revisit-after" content="2 DAYS"/>
26   <meta name="resource-type" content="document"/>
27   <meta name="copyright" content="Copyright (c) 1999-2012 ImageMagick Studio LLC"/>
28   <meta name="distribution" content="Global"/>
29   <link rel="icon" href="../images/wand.png"/>
30   <link rel="shortcut icon" href="../images/wand.ico"  type="images/x-icon"/>
31   <link rel="canonical" href="http://www.imagemagick.org" />\r
32   <link rel="meta" type="application/rdf+xml" title="ICI" href="http://imagemagick.org/ici.rdf"/>\r
33   <!-- Add jQuery library -->\r
34   <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>\r
35   \r
36   <!-- Optionaly include easing and/or mousewheel plugins -->\r
37   <script type="text/javascript" src="http://www.imagemagick.org/fancybox/jquery.easing-1.3.pack.js"></script>\r
38   <script type="text/javascript" src="http://www.imagemagick.org/fancybox/jquery.mousewheel-3.0.6.pack.js"></script>\r
39   \r
40   <!-- Add fancyBox -->\r
41   <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/jquery.fancybox.css?v=2.0.4" type="text/css" media="screen" />\r
42   <script type="text/javascript" src="http://www.imagemagick.org/fancybox/jquery.fancybox.pack.js?v=2.0.4"></script>\r
43   \r
44   <!-- Optionaly include button and/or thumbnail helpers -->\r
45   <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/helpers/jquery.fancybox-buttons.css?v=2.0.4" type="text/css" media="screen" />\r
46   <script type="text/javascript" src="http://www.imagemagick.org/fancybox/helpers/jquery.fancybox-buttons.js?v=2.0.4"></script>\r
47   \r
48   <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/helpers/jquery.fancybox-thumbs.css?v=2.0.4" type="text/css" media="screen" />\r
49   <script type="text/javascript" src="http://www.imagemagick.org/fancybox/helpers/jquery.fancybox-thumbs.js?v=2.0.4"></script>\r
50   <script type="text/javascript">\r
51         $(document).ready(function() {\r
52                 $(".fancybox").fancybox();\r
53         });\r
54   </script>\r
55   <!-- ImageMagick style -->\r
56   <link rel="stylesheet" href="http://www.google.com/cse/style/look/default.css" type="text/css" />\r
57   <style type="text/css" media="all">\r
58     @import url("../www/magick.css");\r
59   </style>\r
60 </head>\r
61 \r
62 <body id="www-imagemagick-org">\r
63 <div class="titlebar">\r
64 <div style="margin: 17px auto; float: left;">\r
65   <script type="text/javascript">\r
66   <!--\r
67     google_ad_client = "pub-3129977114552745";\r
68     google_ad_slot = "5439289906";\r
69     google_ad_width = 728;\r
70     google_ad_height = 90;\r
71   //-->\r
72   </script>\r
73   <script type="text/javascript"\r
74     src="http://pagead2.googlesyndication.com/pagead/show_ads.js">\r
75   </script>\r
76 </div>\r
77 <a href="../discourse-server">\r
78   <img src="../images/logo.jpg"\r
79   alt="ImageMagick Logo"\r
80   style="width: 123px; height: 118px; border: 0px; float: right;" /></a>\r
81 <a href="../index.html">\r
82   <img src="../images/sprite.jpg"\r
83   alt="ImageMagick Sprite"\r
84   style="width: 114px; height: 118px; border: 0px; float: right;" /></a>\r
85 </div>\r
86 \r
87 <div class="westbar">\r
88 \r
89 <div class="menu">
90   <a title="About ImageMagick" href="../index.html">About ImageMagick</a>
91 </div>
92 <div class="menu">
93   <a title="Binary Releases" href="binary-releases.html">Binary Releases</a>
94 </div>
95 <div class="sub">
96     <a title="Binary Release: Unix" href="binary-releases.html#unix">Unix</a>
97 </div>
98 <div class="sub">
99     <a title="Binary Release: MacOS X" href="binary-releases.html#macosx">Mac OS X</a>
100 </div>
101 <div class="sub">
102     <a title="Binary Release: iOS" href="binary-releases.html#iOS">iOS</a>
103 </div>
104 <div class="sub">
105     <a title="Binary Release: Windows" href="binary-releases.html#windows">Windows</a>
106 </div>
107 <div class="sep"></div>\r
108 <div class="menu">
109   <a title="Command-line Tools" href="command-line-tools.html">Command-line Tools</a>
110 </div>
111 <div class="sub">
112     <a title="Command-line Tools: Processing" href="command-line-processing.html">Processing</a>
113 </div>
114 <div class="sub">
115     <a title="Command-line Tools: Options" href="command-line-options.html">Options</a>
116 </div>
117 <div class="sub">
118     <a title="Command-line Tools: Usage" href="http://www.imagemagick.org/Usage/">Usage</a>
119 </div>
120 <div class="menu">
121   <a title="Program Interfaces" href="api.html">Program Interfaces</a>
122 </div>
123 <div class="sub">
124     <a title="Program Interface: MagickWand" href="magick-wand.html">MagickWand</a>
125 </div>
126 <div class="sub">
127     <a title="Program Interface: MagickCore" href="magick-core.html">MagickCore</a>
128 </div>
129 <div class="sub">
130     <a title="Program Interface: PerlMagick" href="perl-magick.html">PerlMagick</a>
131 </div>
132 <div class="sub">
133     <a title="Program Interface: Magick++" href="magick++.html">Magick++</a>
134 </div>
135 <div class="sep"></div>\r
136 <div  class="menu">
137    <a title="Install from Source" href="install-source.html">Install from Source</a>
138 </div>
139 <div class="sub">
140     <a title="Install from Source: Unix" href="install-source.html#unix">Unix</a>
141 </div>
142 <div class="sub">
143     <a title="Install from Source: Windows" href="install-source.html#windows">Windows</a>
144  </div>
145 <div class="menu">
146   <a title="Resources" href="resources.html">Resources</a>
147 </div>
148 <div class="menu">
149   <a title="Architecture" href="architecture.html">Architecture</a>
150 </div>
151 <div class="menu">
152   <a title="Download" href="download.html">Download</a>
153 </div>
154 <div class="sep"></div>\r
155 <div class="menu">
156   <a title="Search" href="search.html">Search</a>
157 </div>
158 <div class="sep"></div>\r
159 <div class="menu">
160   <a title="Site Map" href="sitemap.html">Site Map</a>
161 </div>
162 <div  class="sub">
163   <a title="Site Map: Links" href="links.html">Links</a>
164 </div>
165 <div class="sep"></div>\r
166 <div class="menu">
167   <a rel="follow" title="Sponsors" href="sponsors.html">Sponsors:</a>
168
169   <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>
170   <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... -->
171 <div class="sponsbox">
172 <div class="sponsor">
173   <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... -->
174 </div>
175 <div class="sponsor">
176   <a rel="follow" title="Sponsor: VPS" href="http://www.interdominios.com/vps">VPS</a><!-- 201209010090 barsh@inter... -->
177 </div>
178 <div class="sponsor">
179   <a rel="follow" title="Werbebanner Werbeplane" href="http://www.allesbanner.de">Werbebanner Werbeplane</a><!-- 201212010450 info@druck... -->
180 </div>
181 <div class="sponsor">
182   <a rel="follow" title="Entertainment News &amp; Photos" href="http://www.zimbio.com">Entertainment News &amp; Photos</a><!-- 201211010540 bd@zimb... -->
183 </div>
184 <div class="sponsor">
185   <a rel="follow" title="Sponsor: LED24" href="http://led24.de/">LED24</a><!-- 201207010270 info@led24... -->
186 </div>
187 <div class="sponsor">
188   <a rel="follow" title="Sponsor: Best Website Hosting" href="http://www.top-cheap-web-hosting.com">Best Website Hosting</a><!-- 201304010090 eunge.liu-->
189 </div>
190 <div class="sponsor">
191   <a rel="follow" title="Android Tablet" href="http://www.dinodirect.com/ipads-tablets/">Android Tablet</a><!-- 201208010120 mickey@163... -->
192 </div>
193 <div class="sponsor">
194   <a rel="follow" title="Sponsor: Web Site Hosting" href="http://webhostinggeeks.com">Web Site Hosting</a><!-- 201302010900 funds@enmob... -->
195 </div>
196 <div class="sponsor">
197    <a rel="follow" title="Sponsor: Premium Quality Stock Photos" href="http://www.f1online.pro/en/">Premium Quality Stock Photos</a><!-- 2012080100540 ... -->
198 </div>
199 <div class="sponsor">
200    <a rel="follow" title="Sponsor: Druckerei" href="http://print24.com/de/">Druckerei</a><!-- 2012070100250 ... -->
201 </div>
202 <div class="sponsor">
203   <a rel="follow" title="Sponsor: Managed Server" href="http://www.robhost.de">Managed Server</a><!-- 201210010720 klikics... -->
204 </div>
205 <div class="sponsor">
206   <a rel="follow" title="Sponsor: Druckerei" href="http://www.allesdruck.de">Druckerei</a><!-- 201303011500 r.leo -->
207 </div>
208 <div  class="sponsor">
209    <a rel="follow" title="Sponsor: Kaffeemaschinen reparatur" href="http://www.kaffeemaschinen-reparatur.de">Kaffeemaschinen reparatur</a><!-- 2012080100030 Temurbas atlas-multimedia-->
210 </div>
211 <div class="sponsor">
212    <a rel="follow" title="Sponsor: Fototapete - Tapetendruck" href="http://www.druck-expert.com/Fototapete-Tapetendruck,category,8830.html">Fototapete - Tapetendruck</a><!-- 2012100100155 info@druck-->
213 </div>
214 </div>
215 </div>
216 </div>\r
217 \r
218 <div class="eastbar">\r
219   <div class="g-plusone" id="gplusone"></div>\r
220   <script type="text/javascript">\r
221     window.___gcfg = {\r
222       lang: 'en-US'\r
223     };\r
224 \r
225     (function() {\r
226       var po = document.createElement('script');\r
227       po.type = 'text/javascript'; po.async = true;\r
228       po.src = 'https://apis.google.com/js/plusone.js';\r
229       var script = document.getElementsByTagName('script')[0];\r
230       script.parentNode.insertBefore(po, script);\r
231     })();\r
232     var gplusone = document.getElementById("gplusone");\r
233     gplusone.setAttribute("data-size","medium");\r
234     gplusone.setAttribute("data-count","false");\r
235   </script>\r
236 </div>\r
237 \r
238 <div class="main">\r
239 \r
240 <h1>MagickWand C API</h1>
241
242 <div class="doc-section">
243 <p>The <a href="http://www.imagemagick.org/api/MagickWand/index.html">MagickWand API</a> is the recommended interface between the C programming language and the ImageMagick image processing libraries.  Unlike the <a href="magick-core.html">MagickCore</a> C API, MagickWand uses only a few opaque types.  Accessors are available to set or get important wand properties.  A description of the MagickWand public methods are found here:</p>
244
245 <ul>
246   <li><a href="../www/api/magick-wand.html">Magick Wand Methods</a></li>
247   <li><a href="../www/api/magick-property.html">Set or Get Magick Wand Properties</a></li>
248   <li><a href="../www/api/magick-image.html">Magick Wand Image Methods</a></li>
249   <li><a href="../www/api/pixel-iterator.html">Pixel Iterator Methods</a></li>
250   <li><a href="../www/api/pixel-wand.html">Pixel Wand Methods</a></li>
251   <li><a href="../www/api/drawing-wand.html">Image Vector Drawing</a></li>
252   <li><a href="../www/api/mogrify.html">Command-line Interface</a></li>
253   <li><a href="../www/api/wand-view.html">Wand View Methods</a></li>
254   <li><a href="../www/api/magick-deprecate.html">Deprecated Methods</a></li>
255   <li><a href="exception.html">Error and Warning Codes</a></li>
256 </ul>
257
258 <p>After you write your MagickWand program, compile it like this:</p>
259
260 <p class='crt'><span class="crtprompt"> $ </span><span class='crtin'>cc -o wand `pkg-config --cflags --libs MagickWand` wand.c</span></p>
261 <p>Set the <kbd>PKG_CONFIG_PATH</kbd> environment variable if ImageMagick is not in your default system path:</p>
262 <p class='crt'><span class="crtprompt"> $ </span><span class='crtin'>export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig</span></p>
263 <p>Here is a example program that utilizes the MagickWand API to get you started, <a href="../www/source/wand.c">wand.c</a>. It reads an image, creates a thumbnail, and writes the result to disk.</p>
264
265 <div class="viewport">
266 #include &lt;stdio.h>
267 #include &lt;stdlib.h>
268 #include &lt;wand/MagickWand.h>
269
270 int main(int argc,char **argv)
271 {
272 #define ThrowWandException(wand) \
273 { \
274   char \
275     *description; \
276  \
277   ExceptionType \
278     severity; \
279  \
280   description=MagickGetException(wand,&amp;severity); \
281   (void) fprintf(stderr,"%s %s %lu %s\n",GetMagickModule(),description); \
282   description=(char *) MagickRelinquishMemory(description); \
283   exit(-1); \
284 }
285
286   MagickBooleanType
287     status;
288
289   MagickWand
290     *magick_wand;
291
292   if (argc != 3)
293     {
294       (void) fprintf(stdout,"Usage: %s image thumbnail\n",argv[0]);
295       exit(0);
296     }
297   /*
298     Read an image.
299   */
300   MagickWandGenesis();
301   magick_wand=NewMagickWand();
302   status=MagickReadImage(magick_wand,argv[1]);
303   if (status == MagickFalse)
304     ThrowWandException(magick_wand);
305   /*
306     Turn the images into a thumbnail sequence.
307   */
308   MagickResetIterator(magick_wand);
309   while (MagickNextImage(magick_wand) != MagickFalse)
310     MagickResizeImage(magick_wand,106,80,LanczosFilter,1.0);
311   /*
312     Write the image then destroy it.
313   */
314   status=MagickWriteImages(magick_wand,argv[2],MagickTrue);
315   if (status == MagickFalse)
316     ThrowWandException(magick_wand);
317   magick_wand=DestroyMagickWand(magick_wand);
318   MagickWandTerminus();
319   return(0);
320 }
321 </div>
322
323 <p>Here is another program that shows one way to get and set image pixels with the MagickWand API, <a href="../www/source/contrast.c">contrast.c</a>. It reads an image, applies sigmoidal non-linearity contrast control, and writes the result to disk.</p>
324
325 <div class="viewport">
326 #include &lt;stdio.h>
327 #include &lt;stdlib.h>
328 #include &lt;math.h>
329 #include &lt;wand/MagickWand.h>
330
331 int main(int argc,char **argv)
332 {
333 #define QuantumScale  ((MagickRealType) 1.0/(MagickRealType) QuantumRange)
334 #define SigmoidalContrast(x) \
335   (QuantumRange*(1.0/(1+exp(10.0*(0.5-QuantumScale*x)))-0.0066928509)*1.0092503)
336 #define ThrowWandException(wand) \
337 { \
338   char \
339     *description; \
340  \
341   ExceptionType \
342     severity; \
343  \
344   description=MagickGetException(wand,&amp;severity); \
345   (void) fprintf(stderr,"%s %s %lu %s\n",GetMagickModule(),description); \
346   description=(char *) MagickRelinquishMemory(description); \
347   exit(-1); \
348 }
349
350   long
351     y;
352
353   MagickBooleanType
354     status;
355
356   MagickPixelPacket
357     pixel;
358
359   MagickWand
360     *contrast_wand,
361     *image_wand;
362
363   PixelIterator
364     *contrast_iterator,
365     *iterator;
366
367   PixelWand
368     **contrast_pixels,
369     **pixels;
370
371   register long
372     x;
373
374   unsigned long
375     width;
376
377   if (argc != 3)
378     {
379       (void) fprintf(stdout,"Usage: %s image sigmoidal-image\n",argv[0]);
380       exit(0);
381     }
382   /*
383     Read an image.
384   */
385   MagickWandGenesis();
386   image_wand=NewMagickWand();
387   status=MagickReadImage(image_wand,argv[1]);
388   if (status == MagickFalse)
389     ThrowWandException(image_wand);
390   contrast_wand=CloneMagickWand(image_wand);
391   /*
392     Sigmoidal non-linearity contrast control.
393   */
394   iterator=NewPixelIterator(image_wand);
395   contrast_iterator=NewPixelIterator(contrast_wand);
396   if ((iterator == (PixelIterator *) NULL) ||
397       (contrast_iterator == (PixelIterator *) NULL))
398     ThrowWandException(image_wand);
399   for (y=0; y &lt; (long) MagickGetImageHeight(image_wand); y++)
400   {
401     pixels=PixelGetNextIteratorRow(iterator,&amp;width);
402     contrast_pixels=PixelGetNextIteratorRow(contrast_iterator,&amp;width);
403     if ((pixels == (PixelWand **) NULL) ||
404         (contrast_pixels == (PixelWand **) NULL))
405       break;
406     for (x=0; x &lt; (long) width; x++)
407     {
408       PixelGetMagickColor(pixels[x],&amp;pixel);
409       pixel.red=SigmoidalContrast(pixel.red);
410       pixel.green=SigmoidalContrast(pixel.green);
411       pixel.blue=SigmoidalContrast(pixel.blue);
412       pixel.index=SigmoidalContrast(pixel.index);
413       PixelSetMagickColor(contrast_pixels[x],&amp;pixel);
414     }
415     (void) PixelSyncIterator(contrast_iterator);
416   }
417   if (y &lt; (long) MagickGetImageHeight(image_wand))
418     ThrowWandException(image_wand);
419   contrast_iterator=DestroyPixelIterator(contrast_iterator);
420   iterator=DestroyPixelIterator(iterator);
421   image_wand=DestroyMagickWand(image_wand);
422   /*
423     Write the image then destroy it.
424   */
425   status=MagickWriteImages(contrast_wand,argv[2],MagickTrue);
426   if (status == MagickFalse)
427     ThrowWandException(image_wand);
428   contrast_wand=DestroyMagickWand(contrast_wand);
429   MagickWandTerminus();
430   return(0);
431 }
432 </div>
433 <p><a id="wand-view"></a>Now lets perform the same contrast enhancement while taking advantage of our dual or quad-core processing system by running the algorithm in parallel utilizing wand views.  The <a href="../www/source/wand/sigmoidal-contrast.c">sigmoidal-contrast.c</a> module reads an image, applies sigmoidal non-linearity contrast control, and writes the result to disk just like the previous contrast enhancement program, but now it does its work in parallel (assumes ImageMagick is built with OpenMP support).</p>
434
435 <div class="viewport">
436 #include &lt;stdio.h>
437 #include &lt;stdlib.h>
438 #include &lt;math.h>
439 #include &lt;wand/MagickWand.h>
440
441 static MagickBooleanType SigmoidalContrast(WandView *pixel_view,
442   const ssize_t y,const int id,void *context)
443 {
444 #define QuantumScale  ((MagickRealType) 1.0/(MagickRealType) QuantumRange)
445 #define SigmoidalContrast(x) \
446   (QuantumRange*(1.0/(1+exp(10.0*(0.5-QuantumScale*x)))-0.0066928509)*1.0092503)
447
448   RectangleInfo
449     extent;
450
451   MagickPixelPacket
452     pixel;
453
454   PixelWand
455     **pixels;
456
457   register long
458     x;
459
460   extent=GetWandViewExtent(contrast_view);
461   pixels=GetWandViewPixels(contrast_view);
462   for (x=0; x &lt; (long) (extent.width-extent.height); x++)
463   {
464     PixelGetMagickColor(pixels[x],&amp;pixel);
465     pixel.red=SigmoidalContrast(pixel.red);
466     pixel.green=SigmoidalContrast(pixel.green);
467     pixel.blue=SigmoidalContrast(pixel.blue);
468     pixel.index=SigmoidalContrast(pixel.index);
469     PixelSetMagickColor(contrast_pixels[x],&amp;pixel);
470   }
471   return(MagickTrue);
472 }
473
474 int main(int argc,char **argv)
475 {
476 #define ThrowViewException(view) \
477 { \
478   description=GetWandViewException(view,&amp;severity); \
479   (void) fprintf(stderr,"%s %s %lu %s\n",GetMagickModule(),description); \
480   description=(char *) MagickRelinquishMemory(description); \
481   exit(-1); \
482 }
483 #define ThrowWandException(wand) \
484 { \
485   description=MagickGetException(wand,&amp;severity); \
486   (void) fprintf(stderr,"%s %s %lu %s\n",GetMagickModule(),description); \
487   description=(char *) MagickRelinquishMemory(description); \
488   exit(-1); \
489 }
490
491   char
492     *description;
493
494   ExceptionType
495     severity;
496
497   MagickBooleanType
498     status;
499
500   MagickPixelPacket
501     pixel;
502
503   MagickWand
504     *contrast_wand;
505
506   WandView
507     *contrast_view;
508
509   if (argc != 3)
510     {
511       (void) fprintf(stdout,"Usage: %s image sigmoidal-image\n",argv[0]);
512       exit(0);
513     }
514   /*
515     Read an image.
516   */
517   MagickWandGenesis();
518   contrast_wand=NewMagickWand();
519   status=MagickReadImage(contrast_wand,argv[1]);
520   if (status == MagickFalse)
521     ThrowWandException(contrast_wand);
522   /*
523     Sigmoidal non-linearity contrast control.
524   */
525   contrast_view=NewWandView(contrast_wand);
526   if (contrast_view == (WandView *) NULL)
527     ThrowWandException(contrast_wand);
528   status=UpdateWandViewIterator(contrast_view,SigmoidalContrast,(void *) NULL);
529   if (status == MagickFalse)
530     ThrowWandException(contrast_wand);
531   contrast_view=DestroyWandView(contrast_view);
532   /*
533     Write the image then destroy it.
534   */
535   status=MagickWriteImages(contrast_wand,argv[2],MagickTrue);
536   if (status == MagickFalse)
537     ThrowWandException(contrast_wand);
538   contrast_wand=DestroyMagickWand(contrast_wand);
539   MagickWandTerminus();
540   return(0);
541 }
542 </div>
543 <p><a href="http://members.shaw.ca/el.supremo/MagickWand/">MagickWand Examples in C</a> illustrates how to use the ImageMagick MagickWand API. Each example is presented as a C function, complete with headers, so that it can be copied to a file and then included in your own C project.</p>
544 </div>
545 \r
546 </div>\r
547 \r
548 <div id="linkbar">\r
549     <span id="linkbar-west">&nbsp;</span>\r
550     <span id="linkbar-center">\r
551       <a href="../discourse-server">Discourse Server</a> &bull;\r
552       <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>\r
553     </span>\r
554     <span id="linkbar-east">&nbsp;</span>\r
555   </div>\r
556   <div class="footer">\r
557     <span id="footer-west">&copy; 1999-2012 ImageMagick Studio LLC</span>\r
558     <span id="footer-east"> <a href="contact.html">Contact the Wizards</a></span>\r
559   </div>\r
560   <div style="clear: both; margin: 0; width: 100%; "></div>\r
561   <script type="text/javascript">\r
562     var _gaq = _gaq || [];\r
563     _gaq.push(['_setAccount', 'UA-17690367-1']);\r
564     _gaq.push(['_trackPageview']);\r
565 \r
566     (function() {\r
567       var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\r
568       ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\r
569       var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\r
570     })();\r
571   </script>\r
572 </body>\r
573 </html>\r