2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6 % M M AAA GGGG IIIII CCCC K K %
7 % MM MM A A G I C K K %
8 % M M M AAAAA G GGG I C KKK %
9 % M M A A G G I C K K %
10 % M M A A GGGG IIIII CCCC K K %
12 % IIIII M M AAA GGGG EEEEE %
14 % I M M M AAAAA G GG EEE %
16 % IIIII M M A A GGGG EEEEE %
19 % MagickWand Image Methods %
26 % Copyright 1999-2016 ImageMagick Studio LLC, a non-profit organization %
27 % dedicated to making software imaging solutions freely available. %
29 % You may not use this file except in compliance with the License. You may %
30 % obtain a copy of the License at %
32 % http://www.imagemagick.org/script/license.php %
34 % Unless required by applicable law or agreed to in writing, software %
35 % distributed under the License is distributed on an "AS IS" BASIS, %
36 % WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. %
37 % See the License for the specific language governing permissions and %
38 % limitations under the License. %
40 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
49 #include "MagickWand/studio.h"
50 #include "MagickWand/MagickWand.h"
51 #include "MagickWand/magick-wand-private.h"
52 #include "MagickWand/wand.h"
53 #include "MagickWand/pixel-wand-private.h"
54 #include "MagickCore/image-private.h"
59 #define MagickWandId "MagickWand"
62 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
66 + C l o n e M a g i c k W a n d F r o m I m a g e s %
70 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
72 % CloneMagickWandFromImages() clones the magick wand and inserts a new image
75 % The format of the CloneMagickWandFromImages method is:
77 % MagickWand *CloneMagickWandFromImages(const MagickWand *wand,
80 % A description of each parameter follows:
82 % o wand: the magick wand.
84 % o images: replace the image list with these image(s).
87 static MagickWand *CloneMagickWandFromImages(const MagickWand *wand,
93 assert(wand != (MagickWand *) NULL);
94 assert(wand->signature == MagickWandSignature);
95 if (wand->debug != MagickFalse)
96 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
97 clone_wand=(MagickWand *) AcquireMagickMemory(sizeof(*clone_wand));
98 if (clone_wand == (MagickWand *) NULL)
99 ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed",
101 (void) ResetMagickMemory(clone_wand,0,sizeof(*clone_wand));
102 clone_wand->id=AcquireWandId();
103 (void) FormatLocaleString(clone_wand->name,MagickPathExtent,"%s-%.20g",
104 MagickWandId,(double) clone_wand->id);
105 clone_wand->exception=AcquireExceptionInfo();
106 InheritException(clone_wand->exception,wand->exception);
107 clone_wand->image_info=CloneImageInfo(wand->image_info);
108 clone_wand->images=images;
109 clone_wand->debug=IsEventLogging();
110 clone_wand->signature=MagickWandSignature;
111 if (clone_wand->debug != MagickFalse)
112 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",clone_wand->name);
117 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
121 % G e t I m a g e F r o m M a g i c k W a n d %
125 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
127 % GetImageFromMagickWand() returns the current image from the magick wand.
129 % The format of the GetImageFromMagickWand method is:
131 % Image *GetImageFromMagickWand(const MagickWand *wand)
133 % A description of each parameter follows:
135 % o wand: the magick wand.
138 WandExport Image *GetImageFromMagickWand(const MagickWand *wand)
140 assert(wand != (MagickWand *) NULL);
141 assert(wand->signature == MagickWandSignature);
142 if (wand->debug != MagickFalse)
143 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
144 if (wand->images == (Image *) NULL)
146 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
147 "ContainsNoImages","`%s'",wand->name);
148 return((Image *) NULL);
150 return(wand->images);
154 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
158 % M a g i c k A d a p t i v e S h a r p e n I m a g e %
162 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
164 % MagickAdaptiveBlurImage() adaptively blurs the image by blurring
165 % less intensely near image edges and more intensely far from edges. We
166 % blur the image with a Gaussian operator of the given radius and standard
167 % deviation (sigma). For reasonable results, radius should be larger than
168 % sigma. Use a radius of 0 and MagickAdaptiveBlurImage() selects a
169 % suitable radius for you.
171 % The format of the MagickAdaptiveBlurImage method is:
173 % MagickBooleanType MagickAdaptiveBlurImage(MagickWand *wand,
174 % const double radius,const double sigma)
176 % A description of each parameter follows:
178 % o wand: the magick wand.
180 % o radius: the radius of the Gaussian, in pixels, not counting the center
183 % o sigma: the standard deviation of the Gaussian, in pixels.
186 WandExport MagickBooleanType MagickAdaptiveBlurImage(MagickWand *wand,
187 const double radius,const double sigma)
192 assert(wand != (MagickWand *) NULL);
193 assert(wand->signature == MagickWandSignature);
194 if (wand->debug != MagickFalse)
195 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
196 if (wand->images == (Image *) NULL)
197 ThrowWandException(WandError,"ContainsNoImages",wand->name);
198 sharp_image=AdaptiveBlurImage(wand->images,radius,sigma,wand->exception);
199 if (sharp_image == (Image *) NULL)
201 ReplaceImageInList(&wand->images,sharp_image);
206 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
210 % M a g i c k A d a p t i v e R e s i z e I m a g e %
214 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
216 % MagickAdaptiveResizeImage() adaptively resize image with data dependent
219 % MagickBooleanType MagickAdaptiveResizeImage(MagickWand *wand,
220 % const size_t columns,const size_t rows)
222 % A description of each parameter follows:
224 % o wand: the magick wand.
226 % o columns: the number of columns in the scaled image.
228 % o rows: the number of rows in the scaled image.
231 WandExport MagickBooleanType MagickAdaptiveResizeImage(MagickWand *wand,
232 const size_t columns,const size_t rows)
237 assert(wand != (MagickWand *) NULL);
238 assert(wand->signature == MagickWandSignature);
239 if (wand->debug != MagickFalse)
240 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
241 if (wand->images == (Image *) NULL)
242 ThrowWandException(WandError,"ContainsNoImages",wand->name);
243 resize_image=AdaptiveResizeImage(wand->images,columns,rows,wand->exception);
244 if (resize_image == (Image *) NULL)
246 ReplaceImageInList(&wand->images,resize_image);
251 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
255 % M a g i c k A d a p t i v e S h a r p e n I m a g e %
259 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
261 % MagickAdaptiveSharpenImage() adaptively sharpens the image by sharpening
262 % more intensely near image edges and less intensely far from edges. We
263 % sharpen the image with a Gaussian operator of the given radius and standard
264 % deviation (sigma). For reasonable results, radius should be larger than
265 % sigma. Use a radius of 0 and MagickAdaptiveSharpenImage() selects a
266 % suitable radius for you.
268 % The format of the MagickAdaptiveSharpenImage method is:
270 % MagickBooleanType MagickAdaptiveSharpenImage(MagickWand *wand,
271 % const double radius,const double sigma)
273 % A description of each parameter follows:
275 % o wand: the magick wand.
277 % o radius: the radius of the Gaussian, in pixels, not counting the center
280 % o sigma: the standard deviation of the Gaussian, in pixels.
283 WandExport MagickBooleanType MagickAdaptiveSharpenImage(MagickWand *wand,
284 const double radius,const double sigma)
289 assert(wand != (MagickWand *) NULL);
290 assert(wand->signature == MagickWandSignature);
291 if (wand->debug != MagickFalse)
292 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
293 if (wand->images == (Image *) NULL)
294 ThrowWandException(WandError,"ContainsNoImages",wand->name);
295 sharp_image=AdaptiveSharpenImage(wand->images,radius,sigma,wand->exception);
296 if (sharp_image == (Image *) NULL)
298 ReplaceImageInList(&wand->images,sharp_image);
303 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
307 % M a g i c k A d a p t i v e T h r e s h o l d I m a g e %
311 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
313 % MagickAdaptiveThresholdImage() selects an individual threshold for each pixel
314 % based on the range of intensity values in its local neighborhood. This
315 % allows for thresholding of an image whose global intensity histogram
316 % doesn't contain distinctive peaks.
318 % The format of the AdaptiveThresholdImage method is:
320 % MagickBooleanType MagickAdaptiveThresholdImage(MagickWand *wand,
321 % const size_t width,const size_t height,const double bias)
323 % A description of each parameter follows:
325 % o wand: the magick wand.
327 % o width: the width of the local neighborhood.
329 % o height: the height of the local neighborhood.
331 % o offset: the mean bias.
334 WandExport MagickBooleanType MagickAdaptiveThresholdImage(MagickWand *wand,
335 const size_t width,const size_t height,const double bias)
340 assert(wand != (MagickWand *) NULL);
341 assert(wand->signature == MagickWandSignature);
342 if (wand->debug != MagickFalse)
343 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
344 if (wand->images == (Image *) NULL)
345 ThrowWandException(WandError,"ContainsNoImages",wand->name);
346 threshold_image=AdaptiveThresholdImage(wand->images,width,height,bias,
348 if (threshold_image == (Image *) NULL)
350 ReplaceImageInList(&wand->images,threshold_image);
355 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
359 % M a g i c k A d d I m a g e %
363 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
365 % MagickAddImage() adds a clone of the images from the second wand and
366 % inserts them into the first wand.
368 % Use MagickSetLastIterator(), to append new images into an existing wand,
369 % current image will be set to last image so later adds with also be
370 % appened to end of wand.
372 % Use MagickSetFirstIterator() to prepend new images into wand, any more
373 % images added will also be prepended before other images in the wand.
374 % However the order of a list of new images will not change.
376 % Otherwise the new images will be inserted just after the current image,
377 % and any later image will also be added after this current image but
378 % before the previously added images. Caution is advised when multiple
379 % image adds are inserted into the middle of the wand image list.
381 % The format of the MagickAddImage method is:
383 % MagickBooleanType MagickAddImage(MagickWand *wand,
384 % const MagickWand *add_wand)
386 % A description of each parameter follows:
388 % o wand: the magick wand.
390 % o add_wand: A wand that contains the image list to be added
393 static inline MagickBooleanType InsertImageInWand(MagickWand *wand,
396 if (wand->images == (Image *) NULL)
399 No images in wand, just add them, set current as appropriate.
401 if (wand->insert_before != MagickFalse)
402 wand->images=GetFirstImageInList(images);
404 wand->images=GetLastImageInList(images);
407 /* user jumped to first image, so prepend new images - remain active */
408 if ((wand->insert_before != MagickFalse) &&
409 (wand->images->previous == (Image *) NULL))
411 PrependImageToList(&wand->images,images);
412 wand->images=GetFirstImageInList(images);
416 Note you should never have 'insert_before' true when current image is not
417 the first image in the wand! That is no insert before current image, only
420 if (wand->images->next == (Image *) NULL)
423 At last image, append new images.
425 InsertImageInList(&wand->images,images);
426 wand->images=GetLastImageInList(images);
430 Insert new images, just after the current image.
432 InsertImageInList(&wand->images,images);
436 WandExport MagickBooleanType MagickAddImage(MagickWand *wand,
437 const MagickWand *add_wand)
442 assert(wand != (MagickWand *) NULL);
443 assert(wand->signature == MagickWandSignature);
444 if (wand->debug != MagickFalse)
445 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
446 assert(add_wand != (MagickWand *) NULL);
447 assert(add_wand->signature == MagickWandSignature);
448 if (add_wand->images == (Image *) NULL)
449 ThrowWandException(WandError,"ContainsNoImages",add_wand->name);
451 Clone images in second wand, and insert into first.
453 images=CloneImageList(add_wand->images,wand->exception);
454 if (images == (Image *) NULL)
456 return(InsertImageInWand(wand,images));
460 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
464 % M a g i c k A d d N o i s e I m a g e %
468 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
470 % MagickAddNoiseImage() adds random noise to the image.
472 % The format of the MagickAddNoiseImage method is:
474 % MagickBooleanType MagickAddNoiseImage(MagickWand *wand,
475 % const NoiseType noise_type,const double attenuate)
477 % A description of each parameter follows:
479 % o wand: the magick wand.
481 % o noise_type: The type of noise: Uniform, Gaussian, Multiplicative,
482 % Impulse, Laplacian, or Poisson.
484 % o attenuate: attenuate the random distribution.
487 WandExport MagickBooleanType MagickAddNoiseImage(MagickWand *wand,
488 const NoiseType noise_type,const double attenuate)
493 assert(wand != (MagickWand *) NULL);
494 assert(wand->signature == MagickWandSignature);
495 if (wand->debug != MagickFalse)
496 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
497 if (wand->images == (Image *) NULL)
498 ThrowWandException(WandError,"ContainsNoImages",wand->name);
499 noise_image=AddNoiseImage(wand->images,noise_type,attenuate,wand->exception);
500 if (noise_image == (Image *) NULL)
502 ReplaceImageInList(&wand->images,noise_image);
507 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
511 % M a g i c k A f f i n e T r a n s f o r m I m a g e %
515 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
517 % MagickAffineTransformImage() transforms an image as dictated by the affine
518 % matrix of the drawing wand.
520 % The format of the MagickAffineTransformImage method is:
522 % MagickBooleanType MagickAffineTransformImage(MagickWand *wand,
523 % const DrawingWand *drawing_wand)
525 % A description of each parameter follows:
527 % o wand: the magick wand.
529 % o drawing_wand: the draw wand.
532 WandExport MagickBooleanType MagickAffineTransformImage(MagickWand *wand,
533 const DrawingWand *drawing_wand)
541 assert(wand != (MagickWand *) NULL);
542 assert(wand->signature == MagickWandSignature);
543 if (wand->debug != MagickFalse)
544 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
545 if (wand->images == (Image *) NULL)
546 ThrowWandException(WandError,"ContainsNoImages",wand->name);
547 draw_info=PeekDrawingWand(drawing_wand);
548 if (draw_info == (DrawInfo *) NULL)
550 affine_image=AffineTransformImage(wand->images,&draw_info->affine,
552 draw_info=DestroyDrawInfo(draw_info);
553 if (affine_image == (Image *) NULL)
555 ReplaceImageInList(&wand->images,affine_image);
560 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
564 % M a g i c k A n n o t a t e I m a g e %
568 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
570 % MagickAnnotateImage() annotates an image with text.
572 % The format of the MagickAnnotateImage method is:
574 % MagickBooleanType MagickAnnotateImage(MagickWand *wand,
575 % const DrawingWand *drawing_wand,const double x,const double y,
576 % const double angle,const char *text)
578 % A description of each parameter follows:
580 % o wand: the magick wand.
582 % o drawing_wand: the draw wand.
584 % o x: x ordinate to left of text
586 % o y: y ordinate to text baseline
588 % o angle: rotate text relative to this angle.
590 % o text: text to draw
593 WandExport MagickBooleanType MagickAnnotateImage(MagickWand *wand,
594 const DrawingWand *drawing_wand,const double x,const double y,
595 const double angle,const char *text)
598 geometry[MagickPathExtent];
606 assert(wand != (MagickWand *) NULL);
607 assert(wand->signature == MagickWandSignature);
608 if (wand->debug != MagickFalse)
609 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
610 if (wand->images == (Image *) NULL)
611 ThrowWandException(WandError,"ContainsNoImages",wand->name);
612 draw_info=PeekDrawingWand(drawing_wand);
613 if (draw_info == (DrawInfo *) NULL)
615 (void) CloneString(&draw_info->text,text);
616 (void) FormatLocaleString(geometry,MagickPathExtent,"%+g%+g",x,y);
617 draw_info->affine.sx=cos((double) DegreesToRadians(fmod(angle,360.0)));
618 draw_info->affine.rx=sin((double) DegreesToRadians(fmod(angle,360.0)));
619 draw_info->affine.ry=(-sin((double) DegreesToRadians(fmod(angle,360.0))));
620 draw_info->affine.sy=cos((double) DegreesToRadians(fmod(angle,360.0)));
621 (void) CloneString(&draw_info->geometry,geometry);
622 status=AnnotateImage(wand->images,draw_info,wand->exception);
623 draw_info=DestroyDrawInfo(draw_info);
628 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
632 % M a g i c k A n i m a t e I m a g e s %
636 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
638 % MagickAnimateImages() animates an image or image sequence.
640 % The format of the MagickAnimateImages method is:
642 % MagickBooleanType MagickAnimateImages(MagickWand *wand,
643 % const char *server_name)
645 % A description of each parameter follows:
647 % o wand: the magick wand.
649 % o server_name: the X server name.
652 WandExport MagickBooleanType MagickAnimateImages(MagickWand *wand,
653 const char *server_name)
658 assert(wand != (MagickWand *) NULL);
659 assert(wand->signature == MagickWandSignature);
660 if (wand->debug != MagickFalse)
661 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
662 (void) CloneString(&wand->image_info->server_name,server_name);
663 status=AnimateImages(wand->image_info,wand->images,wand->exception);
668 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
672 % M a g i c k A p p e n d I m a g e s %
676 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
678 % MagickAppendImages() append the images in a wand from the current image
679 % onwards, creating a new wand with the single image result. This is
680 % affected by the gravity and background settings of the first image.
682 % Typically you would call either MagickResetIterator() or
683 % MagickSetFirstImage() before calling this function to ensure that all
684 % the images in the wand's image list will be appended together.
686 % The format of the MagickAppendImages method is:
688 % MagickWand *MagickAppendImages(MagickWand *wand,
689 % const MagickBooleanType stack)
691 % A description of each parameter follows:
693 % o wand: the magick wand.
695 % o stack: By default, images are stacked left-to-right. Set stack to
696 % MagickTrue to stack them top-to-bottom.
699 WandExport MagickWand *MagickAppendImages(MagickWand *wand,
700 const MagickBooleanType stack)
705 assert(wand != (MagickWand *) NULL);
706 assert(wand->signature == MagickWandSignature);
707 if (wand->debug != MagickFalse)
708 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
709 if (wand->images == (Image *) NULL)
710 return((MagickWand *) NULL);
711 append_image=AppendImages(wand->images,stack,wand->exception);
712 if (append_image == (Image *) NULL)
713 return((MagickWand *) NULL);
714 return(CloneMagickWandFromImages(wand,append_image));
718 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
722 % M a g i c k A u t o G a m m a I m a g e %
726 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
728 % MagickAutoGammaImage() extracts the 'mean' from the image and adjust the
729 % image to try make set its gamma appropriatally.
731 % The format of the MagickAutoGammaImage method is:
733 % MagickBooleanType MagickAutoGammaImage(MagickWand *wand)
735 % A description of each parameter follows:
737 % o wand: the magick wand.
740 WandExport MagickBooleanType MagickAutoGammaImage(MagickWand *wand)
745 assert(wand != (MagickWand *) NULL);
746 assert(wand->signature == MagickWandSignature);
747 if (wand->debug != MagickFalse)
748 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
749 if (wand->images == (Image *) NULL)
750 ThrowWandException(WandError,"ContainsNoImages",wand->name);
751 status=AutoGammaImage(wand->images,wand->exception);
756 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
760 % M a g i c k A u t o L e v e l I m a g e %
764 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
766 % MagickAutoLevelImage() adjusts the levels of a particular image channel by
767 % scaling the minimum and maximum values to the full quantum range.
769 % The format of the MagickAutoLevelImage method is:
771 % MagickBooleanType MagickAutoLevelImage(MagickWand *wand)
773 % A description of each parameter follows:
775 % o wand: the magick wand.
778 WandExport MagickBooleanType MagickAutoLevelImage(MagickWand *wand)
783 assert(wand != (MagickWand *) NULL);
784 assert(wand->signature == MagickWandSignature);
785 if (wand->debug != MagickFalse)
786 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
787 if (wand->images == (Image *) NULL)
788 ThrowWandException(WandError,"ContainsNoImages",wand->name);
789 status=AutoLevelImage(wand->images,wand->exception);
794 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
798 % M a g i c k A u t o O r i e n t I m a g e %
802 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
804 % MagickAutoOrientImage() adjusts an image so that its orientation is suitable
805 $ for viewing (i.e. top-left orientation).
807 % The format of the MagickAutoOrientImage method is:
809 % MagickBooleanType MagickAutoOrientImage(MagickWand *image)
811 % A description of each parameter follows:
813 % o wand: the magick wand.
816 WandExport MagickBooleanType MagickAutoOrientImage(MagickWand *wand)
822 assert(wand != (MagickWand *) NULL);
823 assert(wand->signature == MagickWandSignature);
824 if (wand->debug != MagickFalse)
825 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
826 if (wand->images == (Image *) NULL)
827 ThrowWandException(WandError,"ContainsNoImages",wand->name);
828 orient_image=AutoOrientImage(wand->images,wand->images->orientation,
830 if (orient_image == (Image *) NULL)
832 ReplaceImageInList(&wand->images,orient_image);
837 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
841 % M a g i c k B l a c k T h r e s h o l d I m a g e %
845 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
847 % MagickBlackThresholdImage() is like MagickThresholdImage() but forces all
848 % pixels below the threshold into black while leaving all pixels above the
849 % threshold unchanged.
851 % The format of the MagickBlackThresholdImage method is:
853 % MagickBooleanType MagickBlackThresholdImage(MagickWand *wand,
854 % const PixelWand *threshold)
856 % A description of each parameter follows:
858 % o wand: the magick wand.
860 % o threshold: the pixel wand.
863 WandExport MagickBooleanType MagickBlackThresholdImage(MagickWand *wand,
864 const PixelWand *threshold)
867 thresholds[MagickPathExtent];
872 assert(wand != (MagickWand *) NULL);
873 assert(wand->signature == MagickWandSignature);
874 if (wand->debug != MagickFalse)
875 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
876 if (wand->images == (Image *) NULL)
877 ThrowWandException(WandError,"ContainsNoImages",wand->name);
878 (void) FormatLocaleString(thresholds,MagickPathExtent,
879 QuantumFormat "," QuantumFormat "," QuantumFormat "," QuantumFormat,
880 PixelGetRedQuantum(threshold),PixelGetGreenQuantum(threshold),
881 PixelGetBlueQuantum(threshold),PixelGetAlphaQuantum(threshold));
882 status=BlackThresholdImage(wand->images,thresholds,wand->exception);
887 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
891 % M a g i c k B l u e S h i f t I m a g e %
895 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
897 % MagickBlueShiftImage() mutes the colors of the image to simulate a scene at
898 % nighttime in the moonlight.
900 % The format of the MagickBlueShiftImage method is:
902 % MagickBooleanType MagickBlueShiftImage(MagickWand *wand,
903 % const double factor)
905 % A description of each parameter follows:
907 % o wand: the magick wand.
909 % o factor: the blue shift factor (default 1.5)
912 WandExport MagickBooleanType MagickBlueShiftImage(MagickWand *wand,
918 assert(wand != (MagickWand *) NULL);
919 assert(wand->signature == MagickWandSignature);
920 if (wand->debug != MagickFalse)
921 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
922 if (wand->images == (Image *) NULL)
923 ThrowWandException(WandError,"ContainsNoImages",wand->name);
924 shift_image=BlueShiftImage(wand->images,factor,wand->exception);
925 if (shift_image == (Image *) NULL)
927 ReplaceImageInList(&wand->images,shift_image);
932 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
936 % M a g i c k B l u r I m a g e %
940 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
942 % MagickBlurImage() blurs an image. We convolve the image with a
943 % gaussian operator of the given radius and standard deviation (sigma).
944 % For reasonable results, the radius should be larger than sigma. Use a
945 % radius of 0 and BlurImage() selects a suitable radius for you.
947 % The format of the MagickBlurImage method is:
949 % MagickBooleanType MagickBlurImage(MagickWand *wand,const double radius,
950 % const double sigma)
952 % A description of each parameter follows:
954 % o wand: the magick wand.
956 % o radius: the radius of the , in pixels, not counting the center
959 % o sigma: the standard deviation of the , in pixels.
962 WandExport MagickBooleanType MagickBlurImage(MagickWand *wand,
963 const double radius,const double sigma)
968 assert(wand != (MagickWand *) NULL);
969 assert(wand->signature == MagickWandSignature);
970 if (wand->debug != MagickFalse)
971 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
972 if (wand->images == (Image *) NULL)
973 ThrowWandException(WandError,"ContainsNoImages",wand->name);
974 blur_image=BlurImage(wand->images,radius,sigma,wand->exception);
975 if (blur_image == (Image *) NULL)
977 ReplaceImageInList(&wand->images,blur_image);
982 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
986 % M a g i c k B o r d e r I m a g e %
990 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
992 % MagickBorderImage() surrounds the image with a border of the color defined
993 % by the bordercolor pixel wand.
995 % The format of the MagickBorderImage method is:
997 % MagickBooleanType MagickBorderImage(MagickWand *wand,
998 % const PixelWand *bordercolor,const size_t width,
999 % const size_t height,const CompositeOperator compose)
1001 % A description of each parameter follows:
1003 % o wand: the magick wand.
1005 % o bordercolor: the border color pixel wand.
1007 % o width: the border width.
1009 % o height: the border height.
1011 % o compose: the composite operator.
1014 WandExport MagickBooleanType MagickBorderImage(MagickWand *wand,
1015 const PixelWand *bordercolor,const size_t width,const size_t height,
1016 const CompositeOperator compose)
1024 assert(wand != (MagickWand *) NULL);
1025 assert(wand->signature == MagickWandSignature);
1026 if (wand->debug != MagickFalse)
1027 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1028 if (wand->images == (Image *) NULL)
1029 ThrowWandException(WandError,"ContainsNoImages",wand->name);
1030 border_info.width=width;
1031 border_info.height=height;
1034 PixelGetQuantumPacket(bordercolor,&wand->images->border_color);
1035 border_image=BorderImage(wand->images,&border_info,compose,wand->exception);
1036 if (border_image == (Image *) NULL)
1037 return(MagickFalse);
1038 ReplaceImageInList(&wand->images,border_image);
1043 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1047 % M a g i c k B r i g h t n e s s C o n t r a s t S t r e t c h I m a g e %
1051 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1053 % Use MagickBrightnessContrastImage() to change the brightness and/or contrast
1054 % of an image. It converts the brightness and contrast parameters into slope
1055 % and intercept and calls a polynomical function to apply to the image.
1058 % The format of the MagickBrightnessContrastImage method is:
1060 % MagickBooleanType MagickBrightnessContrastImage(MagickWand *wand,
1061 % const double brightness,const double contrast)
1063 % A description of each parameter follows:
1065 % o wand: the magick wand.
1067 % o brightness: the brightness percent (-100 .. 100).
1069 % o contrast: the contrast percent (-100 .. 100).
1072 WandExport MagickBooleanType MagickBrightnessContrastImage(
1073 MagickWand *wand,const double brightness,const double contrast)
1078 assert(wand != (MagickWand *) NULL);
1079 assert(wand->signature == MagickWandSignature);
1080 if (wand->debug != MagickFalse)
1081 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1082 if (wand->images == (Image *) NULL)
1083 ThrowWandException(WandError,"ContainsNoImages",wand->name);
1084 status=BrightnessContrastImage(wand->images,brightness,contrast,
1090 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1094 % M a g i c k C h a n n e l F x I m a g e %
1098 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1100 % MagickChannelFxImage() applies a channel expression to the specified image.
1101 % The expression consists of one or more channels, either mnemonic or numeric
1102 % (e.g. red, 1), separated by actions as follows:
1104 % <=> exchange two channels (e.g. red<=>blue)
1105 % => transfer a channel to another (e.g. red=>green)
1106 % , separate channel operations (e.g. red, green)
1107 % | read channels from next input image (e.g. red | green)
1108 % ; write channels to next output image (e.g. red; green; blue)
1110 % A channel without a operation symbol implies extract. For example, to create
1111 % 3 grayscale images from the red, green, and blue channels of an image, use:
1113 % -channel-fx "red; green; blue"
1115 % The format of the MagickChannelFxImage method is:
1117 % MagickWand *MagickChannelFxImage(MagickWand *wand,const char *expression)
1119 % A description of each parameter follows:
1121 % o wand: the magick wand.
1123 % o expression: the expression.
1126 WandExport MagickWand *MagickChannelFxImage(MagickWand *wand,
1127 const char *expression)
1132 assert(wand != (MagickWand *) NULL);
1133 assert(wand->signature == MagickWandSignature);
1134 if (wand->debug != MagickFalse)
1135 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1136 if (wand->images == (Image *) NULL)
1137 return((MagickWand *) NULL);
1138 fx_image=ChannelFxImage(wand->images,expression,wand->exception);
1139 if (fx_image == (Image *) NULL)
1140 return((MagickWand *) NULL);
1141 return(CloneMagickWandFromImages(wand,fx_image));
1145 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1149 % M a g i c k C h a r c o a l I m a g e %
1153 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1155 % MagickCharcoalImage() simulates a charcoal drawing.
1157 % The format of the MagickCharcoalImage method is:
1159 % MagickBooleanType MagickCharcoalImage(MagickWand *wand,
1160 % const double radius,const double sigma)
1162 % A description of each parameter follows:
1164 % o wand: the magick wand.
1166 % o radius: the radius of the Gaussian, in pixels, not counting the center
1169 % o sigma: the standard deviation of the Gaussian, in pixels.
1172 WandExport MagickBooleanType MagickCharcoalImage(MagickWand *wand,
1173 const double radius,const double sigma)
1178 assert(wand != (MagickWand *) NULL);
1179 assert(wand->signature == MagickWandSignature);
1180 if (wand->debug != MagickFalse)
1181 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1182 if (wand->images == (Image *) NULL)
1183 ThrowWandException(WandError,"ContainsNoImages",wand->name);
1184 charcoal_image=CharcoalImage(wand->images,radius,sigma,wand->exception);
1185 if (charcoal_image == (Image *) NULL)
1186 return(MagickFalse);
1187 ReplaceImageInList(&wand->images,charcoal_image);
1192 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1196 % M a g i c k C h o p I m a g e %
1200 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1202 % MagickChopImage() removes a region of an image and collapses the image to
1203 % occupy the removed portion
1205 % The format of the MagickChopImage method is:
1207 % MagickBooleanType MagickChopImage(MagickWand *wand,
1208 % const size_t width,const size_t height,const ssize_t x,
1211 % A description of each parameter follows:
1213 % o wand: the magick wand.
1215 % o width: the region width.
1217 % o height: the region height.
1219 % o x: the region x offset.
1221 % o y: the region y offset.
1225 WandExport MagickBooleanType MagickChopImage(MagickWand *wand,
1226 const size_t width,const size_t height,const ssize_t x,
1235 assert(wand != (MagickWand *) NULL);
1236 assert(wand->signature == MagickWandSignature);
1237 if (wand->debug != MagickFalse)
1238 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1239 if (wand->images == (Image *) NULL)
1240 ThrowWandException(WandError,"ContainsNoImages",wand->name);
1245 chop_image=ChopImage(wand->images,&chop,wand->exception);
1246 if (chop_image == (Image *) NULL)
1247 return(MagickFalse);
1248 ReplaceImageInList(&wand->images,chop_image);
1253 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1257 % M a g i c k C l a m p I m a g e %
1261 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1263 % MagickClampImage() restricts the color range from 0 to the quantum depth.
1265 % The format of the MagickClampImage method is:
1267 % MagickBooleanType MagickClampImage(MagickWand *wand)
1269 % A description of each parameter follows:
1271 % o wand: the magick wand.
1273 % o channel: the channel.
1276 WandExport MagickBooleanType MagickClampImage(MagickWand *wand)
1278 assert(wand != (MagickWand *) NULL);
1279 assert(wand->signature == MagickWandSignature);
1280 if (wand->debug != MagickFalse)
1281 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1282 if (wand->images == (Image *) NULL)
1283 ThrowWandException(WandError,"ContainsNoImages",wand->name);
1284 return(ClampImage(wand->images,wand->exception));
1288 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1292 % M a g i c k C l i p I m a g e %
1296 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1298 % MagickClipImage() clips along the first path from the 8BIM profile, if
1301 % The format of the MagickClipImage method is:
1303 % MagickBooleanType MagickClipImage(MagickWand *wand)
1305 % A description of each parameter follows:
1307 % o wand: the magick wand.
1310 WandExport MagickBooleanType MagickClipImage(MagickWand *wand)
1315 assert(wand != (MagickWand *) NULL);
1316 assert(wand->signature == MagickWandSignature);
1317 if (wand->debug != MagickFalse)
1318 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1319 if (wand->images == (Image *) NULL)
1320 ThrowWandException(WandError,"ContainsNoImages",wand->name);
1321 status=ClipImage(wand->images,wand->exception);
1326 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1330 % M a g i c k C l i p I m a g e P a t h %
1334 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1336 % MagickClipImagePath() clips along the named paths from the 8BIM profile, if
1337 % present. Later operations take effect inside the path. Id may be a number
1338 % if preceded with #, to work on a numbered path, e.g., "#1" to use the first
1341 % The format of the MagickClipImagePath method is:
1343 % MagickBooleanType MagickClipImagePath(MagickWand *wand,
1344 % const char *pathname,const MagickBooleanType inside)
1346 % A description of each parameter follows:
1348 % o wand: the magick wand.
1350 % o pathname: name of clipping path resource. If name is preceded by #, use
1351 % clipping path numbered by name.
1353 % o inside: if non-zero, later operations take effect inside clipping path.
1354 % Otherwise later operations take effect outside clipping path.
1357 WandExport MagickBooleanType MagickClipImagePath(MagickWand *wand,
1358 const char *pathname,const MagickBooleanType inside)
1363 assert(wand != (MagickWand *) NULL);
1364 assert(wand->signature == MagickWandSignature);
1365 if (wand->debug != MagickFalse)
1366 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1367 if (wand->images == (Image *) NULL)
1368 ThrowWandException(WandError,"ContainsNoImages",wand->name);
1369 status=ClipImagePath(wand->images,pathname,inside,wand->exception);
1374 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1378 % M a g i c k C l u t I m a g e %
1382 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1384 % MagickClutImage() replaces colors in the image from a color lookup table.
1386 % The format of the MagickClutImage method is:
1388 % MagickBooleanType MagickClutImage(MagickWand *wand,
1389 % const MagickWand *clut_wand,const PixelInterpolateMethod method)
1391 % A description of each parameter follows:
1393 % o wand: the magick wand.
1395 % o clut_image: the clut image.
1397 % o method: the pixel interpolation method.
1400 WandExport MagickBooleanType MagickClutImage(MagickWand *wand,
1401 const MagickWand *clut_wand,const PixelInterpolateMethod method)
1406 assert(wand != (MagickWand *) NULL);
1407 assert(wand->signature == MagickWandSignature);
1408 if (wand->debug != MagickFalse)
1409 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1410 if ((wand->images == (Image *) NULL) || (clut_wand->images == (Image *) NULL))
1411 ThrowWandException(WandError,"ContainsNoImages",wand->name);
1412 status=ClutImage(wand->images,clut_wand->images,method,wand->exception);
1417 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1421 % M a g i c k C o a l e s c e I m a g e s %
1425 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1427 % MagickCoalesceImages() composites a set of images while respecting any page
1428 % offsets and disposal methods. GIF, MIFF, and MNG animation sequences
1429 % typically start with an image background and each subsequent image
1430 % varies in size and offset. MagickCoalesceImages() returns a new sequence
1431 % where each image in the sequence is the same size as the first and
1432 % composited with the next image in the sequence.
1434 % The format of the MagickCoalesceImages method is:
1436 % MagickWand *MagickCoalesceImages(MagickWand *wand)
1438 % A description of each parameter follows:
1440 % o wand: the magick wand.
1443 WandExport MagickWand *MagickCoalesceImages(MagickWand *wand)
1448 assert(wand != (MagickWand *) NULL);
1449 assert(wand->signature == MagickWandSignature);
1450 if (wand->debug != MagickFalse)
1451 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1452 if (wand->images == (Image *) NULL)
1453 return((MagickWand *) NULL);
1454 coalesce_image=CoalesceImages(wand->images,wand->exception);
1455 if (coalesce_image == (Image *) NULL)
1456 return((MagickWand *) NULL);
1457 return(CloneMagickWandFromImages(wand,coalesce_image));
1461 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1465 % M a g i c k C o l o r D e c i s i o n I m a g e %
1469 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1471 % MagickColorDecisionListImage() accepts a lightweight Color Correction
1472 % Collection (CCC) file which solely contains one or more color corrections
1473 % and applies the color correction to the image. Here is a sample CCC file:
1475 % <ColorCorrectionCollection xmlns="urn:ASC:CDL:v1.2">
1476 % <ColorCorrection id="cc03345">
1478 % <Slope> 0.9 1.2 0.5 </Slope>
1479 % <Offset> 0.4 -0.5 0.6 </Offset>
1480 % <Power> 1.0 0.8 1.5 </Power>
1483 % <Saturation> 0.85 </Saturation>
1485 % </ColorCorrection>
1486 % </ColorCorrectionCollection>
1488 % which includes the offset, slope, and power for each of the RGB channels
1489 % as well as the saturation.
1491 % The format of the MagickColorDecisionListImage method is:
1493 % MagickBooleanType MagickColorDecisionListImage(MagickWand *wand,
1494 % const char *color_correction_collection)
1496 % A description of each parameter follows:
1498 % o wand: the magick wand.
1500 % o color_correction_collection: the color correction collection in XML.
1503 WandExport MagickBooleanType MagickColorDecisionListImage(MagickWand *wand,
1504 const char *color_correction_collection)
1509 assert(wand != (MagickWand *) NULL);
1510 assert(wand->signature == MagickWandSignature);
1511 if (wand->debug != MagickFalse)
1512 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1513 if (wand->images == (Image *) NULL)
1514 ThrowWandException(WandError,"ContainsNoImages",wand->name);
1515 status=ColorDecisionListImage(wand->images,color_correction_collection,
1521 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1525 % M a g i c k C o l o r i z e I m a g e %
1529 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1531 % MagickColorizeImage() blends the fill color with each pixel in the image.
1533 % The format of the MagickColorizeImage method is:
1535 % MagickBooleanType MagickColorizeImage(MagickWand *wand,
1536 % const PixelWand *colorize,const PixelWand *blend)
1538 % A description of each parameter follows:
1540 % o wand: the magick wand.
1542 % o colorize: the colorize pixel wand.
1544 % o alpha: the alpha pixel wand.
1547 WandExport MagickBooleanType MagickColorizeImage(MagickWand *wand,
1548 const PixelWand *colorize,const PixelWand *blend)
1551 percent_blend[MagickPathExtent];
1559 assert(wand != (MagickWand *) NULL);
1560 assert(wand->signature == MagickWandSignature);
1561 if (wand->debug != MagickFalse)
1562 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1563 if (wand->images == (Image *) NULL)
1564 ThrowWandException(WandError,"ContainsNoImages",wand->name);
1565 GetPixelInfo(wand->images,&target);
1566 if (target.colorspace != CMYKColorspace)
1567 (void) FormatLocaleString(percent_blend,MagickPathExtent,
1568 "%g,%g,%g,%g",(double) (100.0*QuantumScale*
1569 PixelGetRedQuantum(blend)),(double) (100.0*QuantumScale*
1570 PixelGetGreenQuantum(blend)),(double) (100.0*QuantumScale*
1571 PixelGetBlueQuantum(blend)),(double) (100.0*QuantumScale*
1572 PixelGetAlphaQuantum(blend)));
1574 (void) FormatLocaleString(percent_blend,MagickPathExtent,
1575 "%g,%g,%g,%g,%g",(double) (100.0*QuantumScale*
1576 PixelGetRedQuantum(blend)),(double) (100.0*QuantumScale*
1577 PixelGetGreenQuantum(blend)),(double) (100.0*QuantumScale*
1578 PixelGetBlueQuantum(blend)),(double) (100.0*QuantumScale*
1579 PixelGetBlackQuantum(blend)),(double) (100.0*QuantumScale*
1580 PixelGetAlphaQuantum(blend)));
1581 target=PixelGetPixel(colorize);
1582 colorize_image=ColorizeImage(wand->images,percent_blend,&target,
1584 if (colorize_image == (Image *) NULL)
1585 return(MagickFalse);
1586 ReplaceImageInList(&wand->images,colorize_image);
1591 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1595 % M a g i c k C o l o r M a t r i x I m a g e %
1599 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1601 % MagickColorMatrixImage() apply color transformation to an image. The method
1602 % permits saturation changes, hue rotation, luminance to alpha, and various
1603 % other effects. Although variable-sized transformation matrices can be used,
1604 % typically one uses a 5x5 matrix for an RGBA image and a 6x6 for CMYKA
1605 % (or RGBA with offsets). The matrix is similar to those used by Adobe Flash
1606 % except offsets are in column 6 rather than 5 (in support of CMYKA images)
1607 % and offsets are normalized (divide Flash offset by 255).
1609 % The format of the MagickColorMatrixImage method is:
1611 % MagickBooleanType MagickColorMatrixImage(MagickWand *wand,
1612 % const KernelInfo *color_matrix)
1614 % A description of each parameter follows:
1616 % o wand: the magick wand.
1618 % o color_matrix: the color matrix.
1621 WandExport MagickBooleanType MagickColorMatrixImage(MagickWand *wand,
1622 const KernelInfo *color_matrix)
1627 assert(wand != (MagickWand *) NULL);
1628 assert(wand->signature == MagickWandSignature);
1629 if (wand->debug != MagickFalse)
1630 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1631 if (color_matrix == (const KernelInfo *) NULL)
1632 return(MagickFalse);
1633 if (wand->images == (Image *) NULL)
1634 ThrowWandException(WandError,"ContainsNoImages",wand->name);
1635 color_image=ColorMatrixImage(wand->images,color_matrix,wand->exception);
1636 if (color_image == (Image *) NULL)
1637 return(MagickFalse);
1638 ReplaceImageInList(&wand->images,color_image);
1643 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1647 % M a g i c k C o m b i n e I m a g e s %
1651 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1653 % MagickCombineImages() combines one or more images into a single image. The
1654 % grayscale value of the pixels of each image in the sequence is assigned in
1655 % order to the specified hannels of the combined image. The typical
1656 % ordering would be image 1 => Red, 2 => Green, 3 => Blue, etc.
1658 % The format of the MagickCombineImages method is:
1660 % MagickWand *MagickCombineImages(MagickWand *wand,
1661 % const ColorspaceType colorspace)
1663 % A description of each parameter follows:
1665 % o wand: the magick wand.
1667 % o colorspace: the colorspace.
1670 WandExport MagickWand *MagickCombineImages(MagickWand *wand,
1671 const ColorspaceType colorspace)
1676 assert(wand != (MagickWand *) NULL);
1677 assert(wand->signature == MagickWandSignature);
1678 if (wand->debug != MagickFalse)
1679 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1680 if (wand->images == (Image *) NULL)
1681 return((MagickWand *) NULL);
1682 combine_image=CombineImages(wand->images,colorspace,wand->exception);
1683 if (combine_image == (Image *) NULL)
1684 return((MagickWand *) NULL);
1685 return(CloneMagickWandFromImages(wand,combine_image));
1689 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1693 % M a g i c k C o m m e n t I m a g e %
1697 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1699 % MagickCommentImage() adds a comment to your image.
1701 % The format of the MagickCommentImage method is:
1703 % MagickBooleanType MagickCommentImage(MagickWand *wand,
1704 % const char *comment)
1706 % A description of each parameter follows:
1708 % o wand: the magick wand.
1710 % o comment: the image comment.
1713 WandExport MagickBooleanType MagickCommentImage(MagickWand *wand,
1714 const char *comment)
1719 assert(wand != (MagickWand *) NULL);
1720 assert(wand->signature == MagickWandSignature);
1721 if (wand->debug != MagickFalse)
1722 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1723 if (wand->images == (Image *) NULL)
1724 ThrowWandException(WandError,"ContainsNoImages",wand->name);
1725 status=SetImageProperty(wand->images,"comment",comment,wand->exception);
1730 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1734 % M a g i c k C o m p a r e I m a g e L a y e r s %
1738 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1740 % MagickCompareImagesLayers() compares each image with the next in a sequence
1741 % and returns the maximum bounding region of any pixel differences it
1744 % The format of the MagickCompareImagesLayers method is:
1746 % MagickWand *MagickCompareImagesLayers(MagickWand *wand,
1747 % const LayerMethod method)
1749 % A description of each parameter follows:
1751 % o wand: the magick wand.
1753 % o method: the compare method.
1756 WandExport MagickWand *MagickCompareImagesLayers(MagickWand *wand,
1757 const LayerMethod method)
1762 assert(wand != (MagickWand *) NULL);
1763 assert(wand->signature == MagickWandSignature);
1764 if (wand->debug != MagickFalse)
1765 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1766 if (wand->images == (Image *) NULL)
1767 return((MagickWand *) NULL);
1768 layers_image=CompareImagesLayers(wand->images,method,wand->exception);
1769 if (layers_image == (Image *) NULL)
1770 return((MagickWand *) NULL);
1771 return(CloneMagickWandFromImages(wand,layers_image));
1775 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1779 % M a g i c k C o m p a r e I m a g e s %
1783 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1785 % MagickCompareImages() compares an image to a reconstructed image and returns
1786 % the specified difference image.
1788 % The format of the MagickCompareImages method is:
1790 % MagickWand *MagickCompareImages(MagickWand *wand,
1791 % const MagickWand *reference,const MetricType metric,
1792 % double *distortion)
1794 % A description of each parameter follows:
1796 % o wand: the magick wand.
1798 % o reference: the reference wand.
1800 % o metric: the metric.
1802 % o distortion: the computed distortion between the images.
1805 WandExport MagickWand *MagickCompareImages(MagickWand *wand,
1806 const MagickWand *reference,const MetricType metric,double *distortion)
1812 assert(wand != (MagickWand *) NULL);
1813 assert(wand->signature == MagickWandSignature);
1814 if (wand->debug != MagickFalse)
1815 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1816 if ((wand->images == (Image *) NULL) || (reference->images == (Image *) NULL))
1818 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
1819 "ContainsNoImages","`%s'",wand->name);
1820 return((MagickWand *) NULL);
1822 compare_image=CompareImages(wand->images,reference->images,metric,distortion,
1824 if (compare_image == (Image *) NULL)
1825 return((MagickWand *) NULL);
1826 return(CloneMagickWandFromImages(wand,compare_image));
1830 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1834 % M a g i c k C o m p o s i t e I m a g e %
1838 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1840 % MagickCompositeImage() composite one image onto another at the specified
1843 % The format of the MagickCompositeImage method is:
1845 % MagickBooleanType MagickCompositeImage(MagickWand *wand,
1846 % const MagickWand *source_wand,const CompositeOperator compose,
1847 % const MagickBooleanType clip_to_self,const ssize_t x,const ssize_t y)
1849 % A description of each parameter follows:
1851 % o wand: the magick wand holding the destination images
1853 % o source_image: the magick wand holding source image.
1855 % o compose: This operator affects how the composite is applied to the
1856 % image. The default is Over. These are some of the compose methods
1859 % OverCompositeOp InCompositeOp OutCompositeOp
1860 % AtopCompositeOp XorCompositeOp PlusCompositeOp
1861 % MinusCompositeOp AddCompositeOp SubtractCompositeOp
1862 % DifferenceCompositeOp BumpmapCompositeOp CopyCompositeOp
1863 % DisplaceCompositeOp
1865 % o clip_to_self: set to MagickTrue to limit composition to area composed.
1867 % o x: the column offset of the composited image.
1869 % o y: the row offset of the composited image.
1872 WandExport MagickBooleanType MagickCompositeImage(MagickWand *wand,
1873 const MagickWand *source_wand,const CompositeOperator compose,
1874 const MagickBooleanType clip_to_self,const ssize_t x,const ssize_t y)
1879 assert(wand != (MagickWand *) NULL);
1880 assert(wand->signature == MagickWandSignature);
1881 if (wand->debug != MagickFalse)
1882 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1883 if ((wand->images == (Image *) NULL) ||
1884 (source_wand->images == (Image *) NULL))
1885 ThrowWandException(WandError,"ContainsNoImages",wand->name);
1886 status=CompositeImage(wand->images,source_wand->images,compose,clip_to_self,
1887 x,y,wand->exception);
1892 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1896 % M a g i c k C o m p o s i t e I m a g e G r a v i t y %
1900 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1902 % MagickCompositeImageGravity() composite one image onto another using the
1903 % specified gravity.
1905 % The format of the MagickCompositeImageGravity method is:
1907 % MagickBooleanType MagickCompositeImageGravity(MagickWand *wand,
1908 % const MagickWand *source_wand,const CompositeOperator compose,
1909 % const GravityType gravity)
1911 % A description of each parameter follows:
1913 % o wand: the magick wand holding the destination images
1915 % o source_image: the magick wand holding source image.
1917 % o compose: This operator affects how the composite is applied to the
1918 % image. The default is Over. These are some of the compose methods
1921 % OverCompositeOp InCompositeOp OutCompositeOp
1922 % AtopCompositeOp XorCompositeOp PlusCompositeOp
1923 % MinusCompositeOp AddCompositeOp SubtractCompositeOp
1924 % DifferenceCompositeOp BumpmapCompositeOp CopyCompositeOp
1925 % DisplaceCompositeOp
1927 % o gravity: positioning gravity (NorthWestGravity, NorthGravity,
1928 % NorthEastGravity, WestGravity, CenterGravity,
1929 % EastGravity, SouthWestGravity, SouthGravity,
1933 WandExport MagickBooleanType MagickCompositeImageGravity(MagickWand *wand,
1934 const MagickWand *source_wand,const CompositeOperator compose,
1935 const GravityType gravity)
1943 assert(wand != (MagickWand *) NULL);
1944 assert(wand->signature == MagickWandSignature);
1945 if (wand->debug != MagickFalse)
1946 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1947 if ((wand->images == (Image *) NULL) ||
1948 (source_wand->images == (Image *) NULL))
1949 ThrowWandException(WandError,"ContainsNoImages",wand->name);
1950 SetGeometry(source_wand->images,&geometry);
1951 GravityAdjustGeometry(wand->images->columns,wand->images->rows,gravity,
1953 status=CompositeImage(wand->images,source_wand->images,compose,MagickTrue,
1954 geometry.x,geometry.y,wand->exception);
1959 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1963 % M a g i c k C o m p o s i t e L a y e r s %
1967 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1969 % MagickCompositeLayers() composite the images in the source wand over the
1970 % images in the destination wand in sequence, starting with the current
1971 % image in both lists.
1973 % Each layer from the two image lists are composted together until the end of
1974 % one of the image lists is reached. The offset of each composition is also
1975 % adjusted to match the virtual canvas offsets of each layer. As such the
1976 % given offset is relative to the virtual canvas, and not the actual image.
1978 % Composition uses given x and y offsets, as the 'origin' location of the
1979 % source images virtual canvas (not the real image) allowing you to compose a
1980 % list of 'layer images' into the destiantioni images. This makes it well
1981 % sutiable for directly composing 'Clears Frame Animations' or 'Coaleased
1982 % Animations' onto a static or other 'Coaleased Animation' destination image
1983 % list. GIF disposal handling is not looked at.
1985 % Special case:- If one of the image sequences is the last image (just a
1986 % single image remaining), that image is repeatally composed with all the
1987 % images in the other image list. Either the source or destination lists may
1988 % be the single image, for this situation.
1990 % In the case of a single destination image (or last image given), that image
1991 % will ve cloned to match the number of images remaining in the source image
1994 % This is equivelent to the "-layer Composite" Shell API operator.
1996 % The format of the MagickCompositeLayers method is:
1998 % MagickBooleanType MagickCompositeLayers(MagickWand *wand,
1999 % const MagickWand *source_wand, const CompositeOperator compose,
2000 % const ssize_t x,const ssize_t y)
2002 % A description of each parameter follows:
2004 % o wand: the magick wand holding destaintion images
2006 % o source_wand: the wand holding the source images
2008 % o compose, x, y: composition arguments
2011 WandExport MagickBooleanType MagickCompositeLayers(MagickWand *wand,
2012 const MagickWand *source_wand,const CompositeOperator compose,
2013 const ssize_t x,const ssize_t y)
2018 assert(wand != (MagickWand *) NULL);
2019 assert(wand->signature == MagickWandSignature);
2020 if (wand->debug != MagickFalse)
2021 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2022 if ((wand->images == (Image *) NULL) ||
2023 (source_wand->images == (Image *) NULL))
2024 ThrowWandException(WandError,"ContainsNoImages",wand->name);
2025 CompositeLayers(wand->images,compose,source_wand->images,x,y,wand->exception);
2026 status=MagickTrue; /* FUTURE: determine status from exceptions */
2031 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2035 % M a g i c k C o n t r a s t I m a g e %
2039 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2041 % MagickContrastImage() enhances the intensity differences between the lighter
2042 % and darker elements of the image. Set sharpen to a value other than 0 to
2043 % increase the image contrast otherwise the contrast is reduced.
2045 % The format of the MagickContrastImage method is:
2047 % MagickBooleanType MagickContrastImage(MagickWand *wand,
2048 % const MagickBooleanType sharpen)
2050 % A description of each parameter follows:
2052 % o wand: the magick wand.
2054 % o sharpen: Increase or decrease image contrast.
2058 WandExport MagickBooleanType MagickContrastImage(MagickWand *wand,
2059 const MagickBooleanType sharpen)
2064 assert(wand != (MagickWand *) NULL);
2065 assert(wand->signature == MagickWandSignature);
2066 if (wand->debug != MagickFalse)
2067 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2068 if (wand->images == (Image *) NULL)
2069 ThrowWandException(WandError,"ContainsNoImages",wand->name);
2070 status=ContrastImage(wand->images,sharpen,wand->exception);
2075 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2079 % M a g i c k C o n t r a s t S t r e t c h I m a g e %
2083 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2085 % MagickContrastStretchImage() enhances the contrast of a color image by
2086 % adjusting the pixels color to span the entire range of colors available.
2087 % You can also reduce the influence of a particular channel with a gamma
2090 % The format of the MagickContrastStretchImage method is:
2092 % MagickBooleanType MagickContrastStretchImage(MagickWand *wand,
2093 % const double black_point,const double white_point)
2095 % A description of each parameter follows:
2097 % o wand: the magick wand.
2099 % o black_point: the black point.
2101 % o white_point: the white point.
2104 WandExport MagickBooleanType MagickContrastStretchImage(MagickWand *wand,
2105 const double black_point,const double white_point)
2110 assert(wand != (MagickWand *) NULL);
2111 assert(wand->signature == MagickWandSignature);
2112 if (wand->debug != MagickFalse)
2113 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2114 if (wand->images == (Image *) NULL)
2115 ThrowWandException(WandError,"ContainsNoImages",wand->name);
2116 status=ContrastStretchImage(wand->images,black_point,white_point,
2122 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2126 % M a g i c k C o n v o l v e I m a g e %
2130 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2132 % MagickConvolveImage() applies a custom convolution kernel to the image.
2134 % The format of the MagickConvolveImage method is:
2136 % MagickBooleanType MagickConvolveImage(MagickWand *wand,
2137 % const KernelInfo *kernel)
2139 % A description of each parameter follows:
2141 % o wand: the magick wand.
2143 % o kernel: An array of doubles representing the convolution kernel.
2146 WandExport MagickBooleanType MagickConvolveImage(MagickWand *wand,
2147 const KernelInfo *kernel)
2152 assert(wand != (MagickWand *) NULL);
2153 assert(wand->signature == MagickWandSignature);
2154 if (wand->debug != MagickFalse)
2155 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2156 if (kernel == (const KernelInfo *) NULL)
2157 return(MagickFalse);
2158 if (wand->images == (Image *) NULL)
2159 ThrowWandException(WandError,"ContainsNoImages",wand->name);
2160 filter_image=ConvolveImage(wand->images,kernel,wand->exception);
2161 if (filter_image == (Image *) NULL)
2162 return(MagickFalse);
2163 ReplaceImageInList(&wand->images,filter_image);
2168 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2172 % M a g i c k C r o p I m a g e %
2176 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2178 % MagickCropImage() extracts a region of the image.
2180 % The format of the MagickCropImage method is:
2182 % MagickBooleanType MagickCropImage(MagickWand *wand,
2183 % const size_t width,const size_t height,const ssize_t x,const ssize_t y)
2185 % A description of each parameter follows:
2187 % o wand: the magick wand.
2189 % o width: the region width.
2191 % o height: the region height.
2193 % o x: the region x-offset.
2195 % o y: the region y-offset.
2198 WandExport MagickBooleanType MagickCropImage(MagickWand *wand,
2199 const size_t width,const size_t height,const ssize_t x,const ssize_t y)
2207 assert(wand != (MagickWand *) NULL);
2208 assert(wand->signature == MagickWandSignature);
2209 if (wand->debug != MagickFalse)
2210 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2211 if (wand->images == (Image *) NULL)
2212 ThrowWandException(WandError,"ContainsNoImages",wand->name);
2217 crop_image=CropImage(wand->images,&crop,wand->exception);
2218 if (crop_image == (Image *) NULL)
2219 return(MagickFalse);
2220 ReplaceImageInList(&wand->images,crop_image);
2225 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2229 % M a g i c k C y c l e C o l o r m a p I m a g e %
2233 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2235 % MagickCycleColormapImage() displaces an image's colormap by a given number
2236 % of positions. If you cycle the colormap a number of times you can produce
2237 % a psychodelic effect.
2239 % The format of the MagickCycleColormapImage method is:
2241 % MagickBooleanType MagickCycleColormapImage(MagickWand *wand,
2242 % const ssize_t displace)
2244 % A description of each parameter follows:
2246 % o wand: the magick wand.
2248 % o pixel_wand: the pixel wand.
2251 WandExport MagickBooleanType MagickCycleColormapImage(MagickWand *wand,
2252 const ssize_t displace)
2257 assert(wand != (MagickWand *) NULL);
2258 assert(wand->signature == MagickWandSignature);
2259 if (wand->debug != MagickFalse)
2260 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2261 if (wand->images == (Image *) NULL)
2262 ThrowWandException(WandError,"ContainsNoImages",wand->name);
2263 status=CycleColormapImage(wand->images,displace,wand->exception);
2268 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2272 % M a g i c k C o n s t i t u t e I m a g e %
2276 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2278 % MagickConstituteImage() adds an image to the wand comprised of the pixel
2279 % data you supply. The pixel data must be in scanline order top-to-bottom.
2280 % The data can be char, short int, int, float, or double. Float and double
2281 % require the pixels to be normalized [0..1], otherwise [0..Max], where Max
2282 % is the maximum value the type can accomodate (e.g. 255 for char). For
2283 % example, to create a 640x480 image from unsigned red-green-blue character
2286 % MagickConstituteImage(wand,640,480,"RGB",CharPixel,pixels);
2288 % The format of the MagickConstituteImage method is:
2290 % MagickBooleanType MagickConstituteImage(MagickWand *wand,
2291 % const size_t columns,const size_t rows,const char *map,
2292 % const StorageType storage,void *pixels)
2294 % A description of each parameter follows:
2296 % o wand: the magick wand.
2298 % o columns: width in pixels of the image.
2300 % o rows: height in pixels of the image.
2302 % o map: This string reflects the expected ordering of the pixel array.
2303 % It can be any combination or order of R = red, G = green, B = blue,
2304 % A = alpha (0 is transparent), O = alpha (0 is opaque), C = cyan,
2305 % Y = yellow, M = magenta, K = black, I = intensity (for grayscale),
2308 % o storage: Define the data type of the pixels. Float and double types are
2309 % expected to be normalized [0..1] otherwise [0..QuantumRange]. Choose from
2310 % these types: CharPixel, DoublePixel, FloatPixel, IntegerPixel,
2311 % LongPixel, QuantumPixel, or ShortPixel.
2313 % o pixels: This array of values contain the pixel components as defined by
2314 % map and type. You must preallocate this array where the expected
2315 % length varies depending on the values of width, height, map, and type.
2319 WandExport MagickBooleanType MagickConstituteImage(MagickWand *wand,
2320 const size_t columns,const size_t rows,const char *map,
2321 const StorageType storage,const void *pixels)
2326 assert(wand != (MagickWand *) NULL);
2327 assert(wand->signature == MagickWandSignature);
2328 if (wand->debug != MagickFalse)
2329 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2330 images=ConstituteImage(columns,rows,map,storage,pixels,wand->exception);
2331 if (images == (Image *) NULL)
2332 return(MagickFalse);
2333 return(InsertImageInWand(wand,images));
2337 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2341 % M a g i c k D e c i p h e r I m a g e %
2345 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2347 % MagickDecipherImage() converts cipher pixels to plain pixels.
2349 % The format of the MagickDecipherImage method is:
2351 % MagickBooleanType MagickDecipherImage(MagickWand *wand,
2352 % const char *passphrase)
2354 % A description of each parameter follows:
2356 % o wand: the magick wand.
2358 % o passphrase: the passphrase.
2361 WandExport MagickBooleanType MagickDecipherImage(MagickWand *wand,
2362 const char *passphrase)
2364 assert(wand != (MagickWand *) NULL);
2365 assert(wand->signature == MagickWandSignature);
2366 if (wand->debug != MagickFalse)
2367 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2368 if (wand->images == (Image *) NULL)
2369 ThrowWandException(WandError,"ContainsNoImages",wand->name);
2370 return(DecipherImage(wand->images,passphrase,wand->exception));
2374 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2378 % M a g i c k D e c o n s t r u c t I m a g e s %
2382 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2384 % MagickDeconstructImages() compares each image with the next in a sequence
2385 % and returns the maximum bounding region of any pixel differences it
2388 % The format of the MagickDeconstructImages method is:
2390 % MagickWand *MagickDeconstructImages(MagickWand *wand)
2392 % A description of each parameter follows:
2394 % o wand: the magick wand.
2397 WandExport MagickWand *MagickDeconstructImages(MagickWand *wand)
2402 assert(wand != (MagickWand *) NULL);
2403 assert(wand->signature == MagickWandSignature);
2404 if (wand->debug != MagickFalse)
2405 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2406 if (wand->images == (Image *) NULL)
2407 return((MagickWand *) NULL);
2408 deconstruct_image=CompareImagesLayers(wand->images,CompareAnyLayer,
2410 if (deconstruct_image == (Image *) NULL)
2411 return((MagickWand *) NULL);
2412 return(CloneMagickWandFromImages(wand,deconstruct_image));
2416 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2420 % M a g i c k D e s k e w I m a g e %
2424 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2426 % MagickDeskewImage() removes skew from the image. Skew is an artifact that
2427 % occurs in scanned images because of the camera being misaligned,
2428 % imperfections in the scanning or surface, or simply because the paper was
2429 % not placed completely flat when scanned.
2431 % The format of the MagickDeskewImage method is:
2433 % MagickBooleanType MagickDeskewImage(MagickWand *wand,
2434 % const double threshold)
2436 % A description of each parameter follows:
2438 % o wand: the magick wand.
2440 % o threshold: separate background from foreground.
2443 WandExport MagickBooleanType MagickDeskewImage(MagickWand *wand,
2444 const double threshold)
2449 assert(wand != (MagickWand *) NULL);
2450 assert(wand->signature == MagickWandSignature);
2451 if (wand->debug != MagickFalse)
2452 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2453 if (wand->images == (Image *) NULL)
2454 ThrowWandException(WandError,"ContainsNoImages",wand->name);
2455 sepia_image=DeskewImage(wand->images,threshold,wand->exception);
2456 if (sepia_image == (Image *) NULL)
2457 return(MagickFalse);
2458 ReplaceImageInList(&wand->images,sepia_image);
2463 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2467 % M a g i c k D e s p e c k l e I m a g e %
2471 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2473 % MagickDespeckleImage() reduces the speckle noise in an image while
2474 % perserving the edges of the original image.
2476 % The format of the MagickDespeckleImage method is:
2478 % MagickBooleanType MagickDespeckleImage(MagickWand *wand)
2480 % A description of each parameter follows:
2482 % o wand: the magick wand.
2485 WandExport MagickBooleanType MagickDespeckleImage(MagickWand *wand)
2490 assert(wand != (MagickWand *) NULL);
2491 assert(wand->signature == MagickWandSignature);
2492 if (wand->debug != MagickFalse)
2493 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2494 if (wand->images == (Image *) NULL)
2495 ThrowWandException(WandError,"ContainsNoImages",wand->name);
2496 despeckle_image=DespeckleImage(wand->images,wand->exception);
2497 if (despeckle_image == (Image *) NULL)
2498 return(MagickFalse);
2499 ReplaceImageInList(&wand->images,despeckle_image);
2504 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2508 % M a g i c k D e s t r o y I m a g e %
2512 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2514 % MagickDestroyImage() dereferences an image, deallocating memory associated
2515 % with the image if the reference count becomes zero.
2517 % The format of the MagickDestroyImage method is:
2519 % Image *MagickDestroyImage(Image *image)
2521 % A description of each parameter follows:
2523 % o image: the image.
2526 WandExport Image *MagickDestroyImage(Image *image)
2528 return(DestroyImage(image));
2532 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2536 % M a g i c k D i s p l a y I m a g e %
2540 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2542 % MagickDisplayImage() displays an image.
2544 % The format of the MagickDisplayImage method is:
2546 % MagickBooleanType MagickDisplayImage(MagickWand *wand,
2547 % const char *server_name)
2549 % A description of each parameter follows:
2551 % o wand: the magick wand.
2553 % o server_name: the X server name.
2556 WandExport MagickBooleanType MagickDisplayImage(MagickWand *wand,
2557 const char *server_name)
2565 assert(wand != (MagickWand *) NULL);
2566 assert(wand->signature == MagickWandSignature);
2567 if (wand->debug != MagickFalse)
2568 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2569 if (wand->images == (Image *) NULL)
2570 ThrowWandException(WandError,"ContainsNoImages",wand->name);
2571 image=CloneImage(wand->images,0,0,MagickTrue,wand->exception);
2572 if (image == (Image *) NULL)
2573 return(MagickFalse);
2574 (void) CloneString(&wand->image_info->server_name,server_name);
2575 status=DisplayImages(wand->image_info,image,wand->exception);
2576 image=DestroyImage(image);
2581 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2585 % M a g i c k D i s p l a y I m a g e s %
2589 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2591 % MagickDisplayImages() displays an image or image sequence.
2593 % The format of the MagickDisplayImages method is:
2595 % MagickBooleanType MagickDisplayImages(MagickWand *wand,
2596 % const char *server_name)
2598 % A description of each parameter follows:
2600 % o wand: the magick wand.
2602 % o server_name: the X server name.
2605 WandExport MagickBooleanType MagickDisplayImages(MagickWand *wand,
2606 const char *server_name)
2611 assert(wand != (MagickWand *) NULL);
2612 assert(wand->signature == MagickWandSignature);
2613 if (wand->debug != MagickFalse)
2614 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2615 (void) CloneString(&wand->image_info->server_name,server_name);
2616 status=DisplayImages(wand->image_info,wand->images,wand->exception);
2621 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2625 % M a g i c k D i s t o r t I m a g e %
2629 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2631 % MagickDistortImage() distorts an image using various distortion methods, by
2632 % mapping color lookups of the source image to a new destination image
2633 % usally of the same size as the source image, unless 'bestfit' is set to
2636 % If 'bestfit' is enabled, and distortion allows it, the destination image is
2637 % adjusted to ensure the whole source 'image' will just fit within the final
2638 % destination image, which will be sized and offset accordingly. Also in
2639 % many cases the virtual offset of the source image will be taken into
2640 % account in the mapping.
2642 % The format of the MagickDistortImage method is:
2644 % MagickBooleanType MagickDistortImage(MagickWand *wand,
2645 % const DistortImageMethod method,const size_t number_arguments,
2646 % const double *arguments,const MagickBooleanType bestfit)
2648 % A description of each parameter follows:
2650 % o image: the image to be distorted.
2652 % o method: the method of image distortion.
2654 % ArcDistortion always ignores the source image offset, and always
2655 % 'bestfit' the destination image with the top left corner offset
2656 % relative to the polar mapping center.
2658 % Bilinear has no simple inverse mapping so it does not allow 'bestfit'
2659 % style of image distortion.
2661 % Affine, Perspective, and Bilinear, do least squares fitting of the
2662 % distortion when more than the minimum number of control point pairs
2665 % Perspective, and Bilinear, falls back to a Affine distortion when less
2666 % that 4 control point pairs are provided. While Affine distortions let
2667 % you use any number of control point pairs, that is Zero pairs is a
2668 % no-Op (viewport only) distrotion, one pair is a translation and two
2669 % pairs of control points do a scale-rotate-translate, without any
2672 % o number_arguments: the number of arguments given for this distortion
2675 % o arguments: the arguments for this distortion method.
2677 % o bestfit: Attempt to resize destination to fit distorted source.
2680 WandExport MagickBooleanType MagickDistortImage(MagickWand *wand,
2681 const DistortImageMethod method,const size_t number_arguments,
2682 const double *arguments,const MagickBooleanType bestfit)
2687 assert(wand != (MagickWand *) NULL);
2688 assert(wand->signature == MagickWandSignature);
2689 if (wand->debug != MagickFalse)
2690 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2691 if (wand->images == (Image *) NULL)
2692 ThrowWandException(WandError,"ContainsNoImages",wand->name);
2693 distort_image=DistortImage(wand->images,method,number_arguments,arguments,
2694 bestfit,wand->exception);
2695 if (distort_image == (Image *) NULL)
2696 return(MagickFalse);
2697 ReplaceImageInList(&wand->images,distort_image);
2702 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2706 % M a g i c k D r a w I m a g e %
2710 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2712 % MagickDrawImage() renders the drawing wand on the current image.
2714 % The format of the MagickDrawImage method is:
2716 % MagickBooleanType MagickDrawImage(MagickWand *wand,
2717 % const DrawingWand *drawing_wand)
2719 % A description of each parameter follows:
2721 % o wand: the magick wand.
2723 % o drawing_wand: the draw wand.
2726 WandExport MagickBooleanType MagickDrawImage(MagickWand *wand,
2727 const DrawingWand *drawing_wand)
2738 assert(wand != (MagickWand *) NULL);
2739 assert(wand->signature == MagickWandSignature);
2740 if (wand->debug != MagickFalse)
2741 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2742 if (wand->images == (Image *) NULL)
2743 ThrowWandException(WandError,"ContainsNoImages",wand->name);
2744 draw_info=PeekDrawingWand(drawing_wand);
2745 if ((draw_info == (DrawInfo *) NULL) ||
2746 (draw_info->primitive == (char *) NULL))
2747 return(MagickFalse);
2748 primitive=AcquireString(draw_info->primitive);
2749 draw_info=DestroyDrawInfo(draw_info);
2750 draw_info=CloneDrawInfo(wand->image_info,(DrawInfo *) NULL);
2751 draw_info->primitive=primitive;
2752 status=DrawImage(wand->images,draw_info,wand->exception);
2753 draw_info=DestroyDrawInfo(draw_info);
2758 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2762 % M a g i c k E d g e I m a g e %
2766 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2768 % MagickEdgeImage() enhance edges within the image with a convolution filter
2769 % of the given radius. Use a radius of 0 and Edge() selects a suitable
2772 % The format of the MagickEdgeImage method is:
2774 % MagickBooleanType MagickEdgeImage(MagickWand *wand,const double radius)
2776 % A description of each parameter follows:
2778 % o wand: the magick wand.
2780 % o radius: the radius of the pixel neighborhood.
2783 WandExport MagickBooleanType MagickEdgeImage(MagickWand *wand,
2784 const double radius)
2789 assert(wand != (MagickWand *) NULL);
2790 assert(wand->signature == MagickWandSignature);
2791 if (wand->debug != MagickFalse)
2792 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2793 if (wand->images == (Image *) NULL)
2794 ThrowWandException(WandError,"ContainsNoImages",wand->name);
2795 edge_image=EdgeImage(wand->images,radius,wand->exception);
2796 if (edge_image == (Image *) NULL)
2797 return(MagickFalse);
2798 ReplaceImageInList(&wand->images,edge_image);
2803 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2807 % M a g i c k E m b o s s I m a g e %
2811 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2813 % MagickEmbossImage() returns a grayscale image with a three-dimensional
2814 % effect. We convolve the image with a Gaussian operator of the given radius
2815 % and standard deviation (sigma). For reasonable results, radius should be
2816 % larger than sigma. Use a radius of 0 and Emboss() selects a suitable
2819 % The format of the MagickEmbossImage method is:
2821 % MagickBooleanType MagickEmbossImage(MagickWand *wand,const double radius,
2822 % const double sigma)
2824 % A description of each parameter follows:
2826 % o wand: the magick wand.
2828 % o radius: the radius of the Gaussian, in pixels, not counting the center
2831 % o sigma: the standard deviation of the Gaussian, in pixels.
2834 WandExport MagickBooleanType MagickEmbossImage(MagickWand *wand,
2835 const double radius,const double sigma)
2840 assert(wand != (MagickWand *) NULL);
2841 assert(wand->signature == MagickWandSignature);
2842 if (wand->debug != MagickFalse)
2843 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2844 if (wand->images == (Image *) NULL)
2845 ThrowWandException(WandError,"ContainsNoImages",wand->name);
2846 emboss_image=EmbossImage(wand->images,radius,sigma,wand->exception);
2847 if (emboss_image == (Image *) NULL)
2848 return(MagickFalse);
2849 ReplaceImageInList(&wand->images,emboss_image);
2854 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2858 % M a g i c k E n c i p h e r I m a g e %
2862 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2864 % MagickEncipherImage() converts plaint pixels to cipher pixels.
2866 % The format of the MagickEncipherImage method is:
2868 % MagickBooleanType MagickEncipherImage(MagickWand *wand,
2869 % const char *passphrase)
2871 % A description of each parameter follows:
2873 % o wand: the magick wand.
2875 % o passphrase: the passphrase.
2878 WandExport MagickBooleanType MagickEncipherImage(MagickWand *wand,
2879 const char *passphrase)
2881 assert(wand != (MagickWand *) NULL);
2882 assert(wand->signature == MagickWandSignature);
2883 if (wand->debug != MagickFalse)
2884 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2885 if (wand->images == (Image *) NULL)
2886 ThrowWandException(WandError,"ContainsNoImages",wand->name);
2887 return(EncipherImage(wand->images,passphrase,wand->exception));
2891 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2895 % M a g i c k E n h a n c e I m a g e %
2899 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2901 % MagickEnhanceImage() applies a digital filter that improves the quality of a
2904 % The format of the MagickEnhanceImage method is:
2906 % MagickBooleanType MagickEnhanceImage(MagickWand *wand)
2908 % A description of each parameter follows:
2910 % o wand: the magick wand.
2913 WandExport MagickBooleanType MagickEnhanceImage(MagickWand *wand)
2918 assert(wand != (MagickWand *) NULL);
2919 assert(wand->signature == MagickWandSignature);
2920 if (wand->debug != MagickFalse)
2921 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2922 if (wand->images == (Image *) NULL)
2923 ThrowWandException(WandError,"ContainsNoImages",wand->name);
2924 enhance_image=EnhanceImage(wand->images,wand->exception);
2925 if (enhance_image == (Image *) NULL)
2926 return(MagickFalse);
2927 ReplaceImageInList(&wand->images,enhance_image);
2932 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2936 % M a g i c k E q u a l i z e I m a g e %
2940 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2942 % MagickEqualizeImage() equalizes the image histogram.
2944 % The format of the MagickEqualizeImage method is:
2946 % MagickBooleanType MagickEqualizeImage(MagickWand *wand)
2948 % A description of each parameter follows:
2950 % o wand: the magick wand.
2952 % o channel: the image channel(s).
2955 WandExport MagickBooleanType MagickEqualizeImage(MagickWand *wand)
2960 assert(wand != (MagickWand *) NULL);
2961 assert(wand->signature == MagickWandSignature);
2962 if (wand->debug != MagickFalse)
2963 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2964 if (wand->images == (Image *) NULL)
2965 ThrowWandException(WandError,"ContainsNoImages",wand->name);
2966 status=EqualizeImage(wand->images,wand->exception);
2971 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2975 % M a g i c k E v a l u a t e I m a g e %
2979 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2981 % MagickEvaluateImage() applys an arithmetic, relational, or logical
2982 % expression to an image. Use these operators to lighten or darken an image,
2983 % to increase or decrease contrast in an image, or to produce the "negative"
2986 % The format of the MagickEvaluateImage method is:
2988 % MagickBooleanType MagickEvaluateImage(MagickWand *wand,
2989 % const MagickEvaluateOperator operator,const double value)
2990 % MagickBooleanType MagickEvaluateImages(MagickWand *wand,
2991 % const MagickEvaluateOperator operator)
2993 % A description of each parameter follows:
2995 % o wand: the magick wand.
2997 % o op: A channel operator.
2999 % o value: A value value.
3003 WandExport MagickWand *MagickEvaluateImages(MagickWand *wand,
3004 const MagickEvaluateOperator op)
3009 assert(wand != (MagickWand *) NULL);
3010 assert(wand->signature == MagickWandSignature);
3011 if (wand->debug != MagickFalse)
3012 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
3013 if (wand->images == (Image *) NULL)
3014 return((MagickWand *) NULL);
3015 evaluate_image=EvaluateImages(wand->images,op,wand->exception);
3016 if (evaluate_image == (Image *) NULL)
3017 return((MagickWand *) NULL);
3018 return(CloneMagickWandFromImages(wand,evaluate_image));
3021 WandExport MagickBooleanType MagickEvaluateImage(MagickWand *wand,
3022 const MagickEvaluateOperator op,const double value)
3027 assert(wand != (MagickWand *) NULL);
3028 assert(wand->signature == MagickWandSignature);
3029 if (wand->debug != MagickFalse)
3030 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
3031 if (wand->images == (Image *) NULL)
3032 ThrowWandException(WandError,"ContainsNoImages",wand->name);
3033 status=EvaluateImage(wand->images,op,value,wand->exception);
3038 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3042 % M a g i c k E x p o r t I m a g e P i x e l s %
3046 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3048 % MagickExportImagePixels() extracts pixel data from an image and returns it
3049 % to you. The method returns MagickTrue on success otherwise MagickFalse if
3050 % an error is encountered. The data is returned as char, short int, int,
3051 % ssize_t, float, or double in the order specified by map.
3053 % Suppose you want to extract the first scanline of a 640x480 image as
3054 % character data in red-green-blue order:
3056 % MagickExportImagePixels(wand,0,0,640,1,"RGB",CharPixel,pixels);
3058 % The format of the MagickExportImagePixels method is:
3060 % MagickBooleanType MagickExportImagePixels(MagickWand *wand,
3061 % const ssize_t x,const ssize_t y,const size_t columns,
3062 % const size_t rows,const char *map,const StorageType storage,
3065 % A description of each parameter follows:
3067 % o wand: the magick wand.
3069 % o x, y, columns, rows: These values define the perimeter
3070 % of a region of pixels you want to extract.
3072 % o map: This string reflects the expected ordering of the pixel array.
3073 % It can be any combination or order of R = red, G = green, B = blue,
3074 % A = alpha (0 is transparent), O = alpha (0 is opaque), C = cyan,
3075 % Y = yellow, M = magenta, K = black, I = intensity (for grayscale),
3078 % o storage: Define the data type of the pixels. Float and double types are
3079 % expected to be normalized [0..1] otherwise [0..QuantumRange]. Choose from
3080 % these types: CharPixel, DoublePixel, FloatPixel, IntegerPixel,
3081 % LongPixel, QuantumPixel, or ShortPixel.
3083 % o pixels: This array of values contain the pixel components as defined by
3084 % map and type. You must preallocate this array where the expected
3085 % length varies depending on the values of width, height, map, and type.
3088 WandExport MagickBooleanType MagickExportImagePixels(MagickWand *wand,
3089 const ssize_t x,const ssize_t y,const size_t columns,
3090 const size_t rows,const char *map,const StorageType storage,
3096 assert(wand != (MagickWand *) NULL);
3097 assert(wand->signature == MagickWandSignature);
3098 if (wand->debug != MagickFalse)
3099 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
3100 if (wand->images == (Image *) NULL)
3101 ThrowWandException(WandError,"ContainsNoImages",wand->name);
3102 status=ExportImagePixels(wand->images,x,y,columns,rows,map,
3103 storage,pixels,wand->exception);
3108 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3112 % M a g i c k E x t e n t I m a g e %
3116 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3118 % MagickExtentImage() extends the image as defined by the geometry, gravity,
3119 % and wand background color. Set the (x,y) offset of the geometry to move
3120 % the original wand relative to the extended wand.
3122 % The format of the MagickExtentImage method is:
3124 % MagickBooleanType MagickExtentImage(MagickWand *wand,const size_t width,
3125 % const size_t height,const ssize_t x,const ssize_t y)
3127 % A description of each parameter follows:
3129 % o wand: the magick wand.
3131 % o width: the region width.
3133 % o height: the region height.
3135 % o x: the region x offset.
3137 % o y: the region y offset.
3140 WandExport MagickBooleanType MagickExtentImage(MagickWand *wand,
3141 const size_t width,const size_t height,const ssize_t x,const ssize_t y)
3149 assert(wand != (MagickWand *) NULL);
3150 assert(wand->signature == MagickWandSignature);
3151 if (wand->debug != MagickFalse)
3152 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
3153 if (wand->images == (Image *) NULL)
3154 ThrowWandException(WandError,"ContainsNoImages",wand->name);
3156 extent.height=height;
3159 extent_image=ExtentImage(wand->images,&extent,wand->exception);
3160 if (extent_image == (Image *) NULL)
3161 return(MagickFalse);
3162 ReplaceImageInList(&wand->images,extent_image);
3167 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3171 % M a g i c k F l i p I m a g e %
3175 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3177 % MagickFlipImage() creates a vertical mirror image by reflecting the pixels
3178 % around the central x-axis.
3180 % The format of the MagickFlipImage method is:
3182 % MagickBooleanType MagickFlipImage(MagickWand *wand)
3184 % A description of each parameter follows:
3186 % o wand: the magick wand.
3189 WandExport MagickBooleanType MagickFlipImage(MagickWand *wand)
3194 assert(wand != (MagickWand *) NULL);
3195 assert(wand->signature == MagickWandSignature);
3196 if (wand->debug != MagickFalse)
3197 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
3198 if (wand->images == (Image *) NULL)
3199 ThrowWandException(WandError,"ContainsNoImages",wand->name);
3200 flip_image=FlipImage(wand->images,wand->exception);
3201 if (flip_image == (Image *) NULL)
3202 return(MagickFalse);
3203 ReplaceImageInList(&wand->images,flip_image);
3208 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3212 % M a g i c k F l o o d f i l l P a i n t I m a g e %
3216 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3218 % MagickFloodfillPaintImage() changes the color value of any pixel that matches
3219 % target and is an immediate neighbor. If the method FillToBorderMethod is
3220 % specified, the color value is changed for any neighbor pixel that does not
3221 % match the bordercolor member of image.
3223 % The format of the MagickFloodfillPaintImage method is:
3225 % MagickBooleanType MagickFloodfillPaintImage(MagickWand *wand,
3226 % const PixelWand *fill,const double fuzz,const PixelWand *bordercolor,
3227 % const ssize_t x,const ssize_t y,const MagickBooleanType invert)
3229 % A description of each parameter follows:
3231 % o wand: the magick wand.
3233 % o fill: the floodfill color pixel wand.
3235 % o fuzz: By default target must match a particular pixel color
3236 % exactly. However, in many cases two colors may differ by a small amount.
3237 % The fuzz member of image defines how much tolerance is acceptable to
3238 % consider two colors as the same. For example, set fuzz to 10 and the
3239 % color red at intensities of 100 and 102 respectively are now interpreted
3240 % as the same color for the purposes of the floodfill.
3242 % o bordercolor: the border color pixel wand.
3244 % o x,y: the starting location of the operation.
3246 % o invert: paint any pixel that does not match the target color.
3249 WandExport MagickBooleanType MagickFloodfillPaintImage(MagickWand *wand,
3250 const PixelWand *fill,const double fuzz,const PixelWand *bordercolor,
3251 const ssize_t x,const ssize_t y,const MagickBooleanType invert)
3262 assert(wand != (MagickWand *) NULL);
3263 assert(wand->signature == MagickWandSignature);
3264 if (wand->debug != MagickFalse)
3265 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
3266 if (wand->images == (Image *) NULL)
3267 ThrowWandException(WandError,"ContainsNoImages",wand->name);
3268 draw_info=CloneDrawInfo(wand->image_info,(DrawInfo *) NULL);
3269 PixelGetQuantumPacket(fill,&draw_info->fill);
3270 (void) GetOneVirtualPixelInfo(wand->images,TileVirtualPixelMethod,x %
3271 wand->images->columns,y % wand->images->rows,&target,wand->exception);
3272 if (bordercolor != (PixelWand *) NULL)
3273 PixelGetMagickColor(bordercolor,&target);
3274 wand->images->fuzz=fuzz;
3275 status=FloodfillPaintImage(wand->images,draw_info,&target,x,y,invert,
3277 draw_info=DestroyDrawInfo(draw_info);
3282 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3286 % M a g i c k F l o p I m a g e %
3290 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3292 % MagickFlopImage() creates a horizontal mirror image by reflecting the pixels
3293 % around the central y-axis.
3295 % The format of the MagickFlopImage method is:
3297 % MagickBooleanType MagickFlopImage(MagickWand *wand)
3299 % A description of each parameter follows:
3301 % o wand: the magick wand.
3304 WandExport MagickBooleanType MagickFlopImage(MagickWand *wand)
3309 assert(wand != (MagickWand *) NULL);
3310 assert(wand->signature == MagickWandSignature);
3311 if (wand->debug != MagickFalse)
3312 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
3313 if (wand->images == (Image *) NULL)
3314 ThrowWandException(WandError,"ContainsNoImages",wand->name);
3315 flop_image=FlopImage(wand->images,wand->exception);
3316 if (flop_image == (Image *) NULL)
3317 return(MagickFalse);
3318 ReplaceImageInList(&wand->images,flop_image);
3323 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3327 % M a g i c k F o u r i e r T r a n s f o r m I m a g e %
3331 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3333 % MagickForwardFourierTransformImage() implements the discrete Fourier
3334 % transform (DFT) of the image either as a magnitude / phase or real /
3335 % imaginary image pair.
3337 % The format of the MagickForwardFourierTransformImage method is:
3339 % MagickBooleanType MagickForwardFourierTransformImage(MagickWand *wand,
3340 % const MagickBooleanType magnitude)
3342 % A description of each parameter follows:
3344 % o wand: the magick wand.
3346 % o magnitude: if true, return as magnitude / phase pair otherwise a real /
3347 % imaginary image pair.
3350 WandExport MagickBooleanType MagickForwardFourierTransformImage(
3351 MagickWand *wand,const MagickBooleanType magnitude)
3356 assert(wand != (MagickWand *) NULL);
3357 assert(wand->signature == MagickWandSignature);
3358 if (wand->debug != MagickFalse)
3359 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
3360 if (wand->images == (Image *) NULL)
3361 ThrowWandException(WandError,"ContainsNoImages",wand->name);
3362 forward_image=ForwardFourierTransformImage(wand->images,magnitude,
3364 if (forward_image == (Image *) NULL)
3365 return(MagickFalse);
3366 ReplaceImageInList(&wand->images,forward_image);
3371 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3375 % M a g i c k F r a m e I m a g e %
3379 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3381 % MagickFrameImage() adds a simulated three-dimensional border around the
3382 % image. The width and height specify the border width of the vertical and
3383 % horizontal sides of the frame. The inner and outer bevels indicate the
3384 % width of the inner and outer shadows of the frame.
3386 % The format of the MagickFrameImage method is:
3388 % MagickBooleanType MagickFrameImage(MagickWand *wand,
3389 % const PixelWand *matte_color,const size_t width,
3390 % const size_t height,const ssize_t inner_bevel,
3391 % const ssize_t outer_bevel,const CompositeOperator compose)
3393 % A description of each parameter follows:
3395 % o wand: the magick wand.
3397 % o matte_color: the frame color pixel wand.
3399 % o width: the border width.
3401 % o height: the border height.
3403 % o inner_bevel: the inner bevel width.
3405 % o outer_bevel: the outer bevel width.
3407 % o compose: the composite operator.
3410 WandExport MagickBooleanType MagickFrameImage(MagickWand *wand,
3411 const PixelWand *matte_color,const size_t width,const size_t height,
3412 const ssize_t inner_bevel,const ssize_t outer_bevel,
3413 const CompositeOperator compose)
3421 assert(wand != (MagickWand *) NULL);
3422 assert(wand->signature == MagickWandSignature);
3423 if (wand->debug != MagickFalse)
3424 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
3425 if (wand->images == (Image *) NULL)
3426 ThrowWandException(WandError,"ContainsNoImages",wand->name);
3427 (void) ResetMagickMemory(&frame_info,0,sizeof(frame_info));
3428 frame_info.width=wand->images->columns+2*width;
3429 frame_info.height=wand->images->rows+2*height;
3430 frame_info.x=(ssize_t) width;
3431 frame_info.y=(ssize_t) height;
3432 frame_info.inner_bevel=inner_bevel;
3433 frame_info.outer_bevel=outer_bevel;
3434 PixelGetQuantumPacket(matte_color,&wand->images->matte_color);
3435 frame_image=FrameImage(wand->images,&frame_info,compose,wand->exception);
3436 if (frame_image == (Image *) NULL)
3437 return(MagickFalse);
3438 ReplaceImageInList(&wand->images,frame_image);
3443 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3447 % M a g i c k F u n c t i o n I m a g e %
3451 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3453 % MagickFunctionImage() applys an arithmetic, relational, or logical
3454 % expression to an image. Use these operators to lighten or darken an image,
3455 % to increase or decrease contrast in an image, or to produce the "negative"
3458 % The format of the MagickFunctionImage method is:
3460 % MagickBooleanType MagickFunctionImage(MagickWand *wand,
3461 % const MagickFunction function,const size_t number_arguments,
3462 % const double *arguments)
3464 % A description of each parameter follows:
3466 % o wand: the magick wand.
3468 % o function: the image function.
3470 % o number_arguments: the number of function arguments.
3472 % o arguments: the function arguments.
3475 WandExport MagickBooleanType MagickFunctionImage(MagickWand *wand,
3476 const MagickFunction function,const size_t number_arguments,
3477 const double *arguments)
3482 assert(wand != (MagickWand *) NULL);
3483 assert(wand->signature == MagickWandSignature);
3484 if (wand->debug != MagickFalse)
3485 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
3486 if (wand->images == (Image *) NULL)
3487 ThrowWandException(WandError,"ContainsNoImages",wand->name);
3488 status=FunctionImage(wand->images,function,number_arguments,arguments,
3494 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3498 % M a g i c k F x I m a g e %
3502 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3504 % MagickFxImage() evaluate expression for each pixel in the image.
3506 % The format of the MagickFxImage method is:
3508 % MagickWand *MagickFxImage(MagickWand *wand,const char *expression)
3510 % A description of each parameter follows:
3512 % o wand: the magick wand.
3514 % o expression: the expression.
3517 WandExport MagickWand *MagickFxImage(MagickWand *wand,const char *expression)
3522 assert(wand != (MagickWand *) NULL);
3523 assert(wand->signature == MagickWandSignature);
3524 if (wand->debug != MagickFalse)
3525 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
3526 if (wand->images == (Image *) NULL)
3527 return((MagickWand *) NULL);
3528 fx_image=FxImage(wand->images,expression,wand->exception);
3529 if (fx_image == (Image *) NULL)
3530 return((MagickWand *) NULL);
3531 return(CloneMagickWandFromImages(wand,fx_image));
3535 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3539 % M a g i c k G a m m a I m a g e %
3543 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3545 % MagickGammaImage() gamma-corrects an image. The same image viewed on
3546 % different devices will have perceptual differences in the way the image's
3547 % intensities are represented on the screen. Specify individual gamma levels
3548 % for the red, green, and blue channels, or adjust all three with the gamma
3549 % parameter. Values typically range from 0.8 to 2.3.
3551 % You can also reduce the influence of a particular channel with a gamma
3554 % The format of the MagickGammaImage method is:
3556 % MagickBooleanType MagickGammaImage(MagickWand *wand,const double gamma)
3558 % A description of each parameter follows:
3560 % o wand: the magick wand.
3562 % o level: Define the level of gamma correction.
3565 WandExport MagickBooleanType MagickGammaImage(MagickWand *wand,
3571 assert(wand != (MagickWand *) NULL);
3572 assert(wand->signature == MagickWandSignature);
3573 if (wand->debug != MagickFalse)
3574 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
3575 if (wand->images == (Image *) NULL)
3576 ThrowWandException(WandError,"ContainsNoImages",wand->name);
3577 status=GammaImage(wand->images,gamma,wand->exception);
3582 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3586 % M a g i c k G a u s s i a n B l u r I m a g e %
3590 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3592 % MagickGaussianBlurImage() blurs an image. We convolve the image with a
3593 % Gaussian operator of the given radius and standard deviation (sigma).
3594 % For reasonable results, the radius should be larger than sigma. Use a
3595 % radius of 0 and MagickGaussianBlurImage() selects a suitable radius for you.
3597 % The format of the MagickGaussianBlurImage method is:
3599 % MagickBooleanType MagickGaussianBlurImage(MagickWand *wand,
3600 % const double radius,const double sigma)
3602 % A description of each parameter follows:
3604 % o wand: the magick wand.
3606 % o radius: the radius of the Gaussian, in pixels, not counting the center
3609 % o sigma: the standard deviation of the Gaussian, in pixels.
3612 WandExport MagickBooleanType MagickGaussianBlurImage(MagickWand *wand,
3613 const double radius,const double sigma)
3618 assert(wand != (MagickWand *) NULL);
3619 assert(wand->signature == MagickWandSignature);
3620 if (wand->debug != MagickFalse)
3621 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
3622 if (wand->images == (Image *) NULL)
3623 ThrowWandException(WandError,"ContainsNoImages",wand->name);
3624 blur_image=GaussianBlurImage(wand->images,radius,sigma,wand->exception);
3625 if (blur_image == (Image *) NULL)
3626 return(MagickFalse);
3627 ReplaceImageInList(&wand->images,blur_image);
3632 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3636 % M a g i c k G e t I m a g e %
3640 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3642 % MagickGetImage() gets the image at the current image index.
3644 % The format of the MagickGetImage method is:
3646 % MagickWand *MagickGetImage(MagickWand *wand)
3648 % A description of each parameter follows:
3650 % o wand: the magick wand.
3653 WandExport MagickWand *MagickGetImage(MagickWand *wand)
3658 assert(wand != (MagickWand *) NULL);
3659 assert(wand->signature == MagickWandSignature);
3660 if (wand->debug != MagickFalse)
3661 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
3662 if (wand->images == (Image *) NULL)
3664 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
3665 "ContainsNoImages","`%s'",wand->name);
3666 return((MagickWand *) NULL);
3668 image=CloneImage(wand->images,0,0,MagickTrue,wand->exception);
3669 if (image == (Image *) NULL)
3670 return((MagickWand *) NULL);
3671 return(CloneMagickWandFromImages(wand,image));
3675 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3679 % M a g i c k G e t I m a g e A l p h a C h a n n e l %
3683 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3685 % MagickGetImageAlphaChannel() returns MagickFalse if the image alpha channel
3686 % is not activated. That is, the image is RGB rather than RGBA or CMYK rather
3689 % The format of the MagickGetImageAlphaChannel method is:
3691 % MagickBooleanType MagickGetImageAlphaChannel(MagickWand *wand)
3693 % A description of each parameter follows:
3695 % o wand: the magick wand.
3698 WandExport MagickBooleanType MagickGetImageAlphaChannel(MagickWand *wand)
3700 assert(wand != (MagickWand *) NULL);
3701 assert(wand->signature == MagickWandSignature);
3702 if (wand->debug != MagickFalse)
3703 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
3704 if (wand->images == (Image *) NULL)
3705 ThrowWandException(WandError,"ContainsNoImages",wand->name);
3706 return(GetImageAlphaChannel(wand->images));
3710 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3714 % M a g i c k G e t I m a g e C l i p M a s k %
3718 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3720 % MagickGetImageMask() gets the image clip mask at the current image index.
3722 % The format of the MagickGetImageMask method is:
3724 % MagickWand *MagickGetImageMask(MagickWand *wand)
3726 % A description of each parameter follows:
3728 % o wand: the magick wand.
3730 % o type: type of mask, ReadPixelMask or WritePixelMask.
3733 WandExport MagickWand *MagickGetImageMask(MagickWand *wand,
3734 const PixelMask type)
3739 assert(wand != (MagickWand *) NULL);
3740 assert(wand->signature == MagickWandSignature);
3741 if (wand->debug != MagickFalse)
3742 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
3743 if (wand->images == (Image *) NULL)
3745 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
3746 "ContainsNoImages","`%s'",wand->name);
3747 return((MagickWand *) NULL);
3749 image=GetImageMask(wand->images,type,wand->exception);
3750 if (image == (Image *) NULL)
3751 return((MagickWand *) NULL);
3752 return(CloneMagickWandFromImages(wand,image));
3756 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3760 % M a g i c k G e t I m a g e B a c k g r o u n d C o l o r %
3764 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3766 % MagickGetImageBackgroundColor() returns the image background color.
3768 % The format of the MagickGetImageBackgroundColor method is:
3770 % MagickBooleanType MagickGetImageBackgroundColor(MagickWand *wand,
3771 % PixelWand *background_color)
3773 % A description of each parameter follows:
3775 % o wand: the magick wand.
3777 % o background_color: Return the background color.
3780 WandExport MagickBooleanType MagickGetImageBackgroundColor(MagickWand *wand,
3781 PixelWand *background_color)
3783 assert(wand != (MagickWand *) NULL);
3784 assert(wand->signature == MagickWandSignature);
3785 if (wand->debug != MagickFalse)
3786 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
3787 if (wand->images == (Image *) NULL)
3788 ThrowWandException(WandError,"ContainsNoImages",wand->name);
3789 PixelSetPixelColor(background_color,&wand->images->background_color);
3794 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3798 % M a g i c k G e t I m a g e B l o b %
3802 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3804 % MagickGetImageBlob() implements direct to memory image formats. It returns
3805 % the image as a blob (a formatted "file" in memory) and its length, starting
3806 % from the current position in the image sequence. Use MagickSetImageFormat()
3807 % to set the format to write to the blob (GIF, JPEG, PNG, etc.).
3809 % Utilize MagickResetIterator() to ensure the write is from the beginning of
3810 % the image sequence.
3812 % Use MagickRelinquishMemory() to free the blob when you are done with it.
3814 % The format of the MagickGetImageBlob method is:
3816 % unsigned char *MagickGetImageBlob(MagickWand *wand,size_t *length)
3818 % A description of each parameter follows:
3820 % o wand: the magick wand.
3822 % o length: the length of the blob.
3825 WandExport unsigned char *MagickGetImageBlob(MagickWand *wand,size_t *length)
3830 assert(wand != (MagickWand *) NULL);
3831 assert(wand->signature == MagickWandSignature);
3832 if (wand->debug != MagickFalse)
3833 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
3834 if (wand->images == (Image *) NULL)
3836 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
3837 "ContainsNoImages","`%s'",wand->name);
3838 return((unsigned char *) NULL);
3840 blob=(unsigned char *) ImageToBlob(wand->image_info,wand->images,length,
3846 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3850 % M a g i c k G e t I m a g e s B l o b %
3854 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3856 % MagickGetImageBlob() implements direct to memory image formats. It
3857 % returns the image sequence as a blob and its length. The format of the image
3858 % determines the format of the returned blob (GIF, JPEG, PNG, etc.). To
3859 % return a different image format, use MagickSetImageFormat().
3861 % Note, some image formats do not permit multiple images to the same image
3862 % stream (e.g. JPEG). in this instance, just the first image of the
3863 % sequence is returned as a blob.
3865 % The format of the MagickGetImagesBlob method is:
3867 % unsigned char *MagickGetImagesBlob(MagickWand *wand,size_t *length)
3869 % A description of each parameter follows:
3871 % o wand: the magick wand.
3873 % o length: the length of the blob.
3876 WandExport unsigned char *MagickGetImagesBlob(MagickWand *wand,size_t *length)
3881 assert(wand != (MagickWand *) NULL);
3882 assert(wand->signature == MagickWandSignature);
3883 if (wand->debug != MagickFalse)
3884 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
3885 if (wand->images == (Image *) NULL)
3887 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
3888 "ContainsNoImages","`%s'",wand->name);
3889 return((unsigned char *) NULL);
3891 blob=(unsigned char *) ImagesToBlob(wand->image_info,GetFirstImageInList(
3892 wand->images),length,wand->exception);
3897 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3901 % M a g i c k G e t I m a g e B l u e P r i m a r y %
3905 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3907 % MagickGetImageBluePrimary() returns the chromaticy blue primary point for the
3910 % The format of the MagickGetImageBluePrimary method is:
3912 % MagickBooleanType MagickGetImageBluePrimary(MagickWand *wand,double *x,
3915 % A description of each parameter follows:
3917 % o wand: the magick wand.
3919 % o x: the chromaticity blue primary x-point.
3921 % o y: the chromaticity blue primary y-point.
3924 WandExport MagickBooleanType MagickGetImageBluePrimary(MagickWand *wand,
3925 double *x,double *y)
3927 assert(wand != (MagickWand *) NULL);
3928 assert(wand->signature == MagickWandSignature);
3929 if (wand->debug != MagickFalse)
3930 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
3931 if (wand->images == (Image *) NULL)
3932 ThrowWandException(WandError,"ContainsNoImages",wand->name);
3933 *x=wand->images->chromaticity.blue_primary.x;
3934 *y=wand->images->chromaticity.blue_primary.y;
3939 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3943 % M a g i c k G e t I m a g e B o r d e r C o l o r %
3947 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3949 % MagickGetImageBorderColor() returns the image border color.
3951 % The format of the MagickGetImageBorderColor method is:
3953 % MagickBooleanType MagickGetImageBorderColor(MagickWand *wand,
3954 % PixelWand *border_color)
3956 % A description of each parameter follows:
3958 % o wand: the magick wand.
3960 % o border_color: Return the border color.
3963 WandExport MagickBooleanType MagickGetImageBorderColor(MagickWand *wand,
3964 PixelWand *border_color)
3966 assert(wand != (MagickWand *) NULL);
3967 assert(wand->signature == MagickWandSignature);
3968 if (wand->debug != MagickFalse)
3969 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
3970 if (wand->images == (Image *) NULL)
3971 ThrowWandException(WandError,"ContainsNoImages",wand->name);
3972 PixelSetPixelColor(border_color,&wand->images->border_color);
3977 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3981 % M a g i c k G e t I m a g e F e a t u r e s %
3985 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3987 % MagickGetImageFeatures() returns features for each channel in the
3988 % image in each of four directions (horizontal, vertical, left and right
3989 % diagonals) for the specified distance. The features include the angular
3990 % second moment, contrast, correlation, sum of squares: variance, inverse
3991 % difference moment, sum average, sum varience, sum entropy, entropy,
3992 % difference variance, difference entropy, information measures of
3993 % correlation 1, information measures of correlation 2, and maximum
3994 % correlation coefficient. You can access the red channel contrast, for
3995 % example, like this:
3997 % channel_features=MagickGetImageFeatures(wand,1);
3998 % contrast=channel_features[RedPixelChannel].contrast[0];
4000 % Use MagickRelinquishMemory() to free the statistics buffer.
4002 % The format of the MagickGetImageFeatures method is:
4004 % ChannelFeatures *MagickGetImageFeatures(MagickWand *wand,
4005 % const size_t distance)
4007 % A description of each parameter follows:
4009 % o wand: the magick wand.
4011 % o distance: the distance.
4014 WandExport ChannelFeatures *MagickGetImageFeatures(MagickWand *wand,
4015 const size_t distance)
4017 assert(wand != (MagickWand *) NULL);
4018 assert(wand->signature == MagickWandSignature);
4019 if (wand->debug != MagickFalse)
4020 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4021 if (wand->images == (Image *) NULL)
4023 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
4024 "ContainsNoImages","`%s'",wand->name);
4025 return((ChannelFeatures *) NULL);
4027 return(GetImageFeatures(wand->images,distance,wand->exception));
4031 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4035 % M a g i c k G e t I m a g e K u r t o s i s %
4039 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4041 % MagickGetImageKurtosis() gets the kurtosis and skewness of one or
4042 % more image channels.
4044 % The format of the MagickGetImageKurtosis method is:
4046 % MagickBooleanType MagickGetImageKurtosis(MagickWand *wand,
4047 % double *kurtosis,double *skewness)
4049 % A description of each parameter follows:
4051 % o wand: the magick wand.
4053 % o kurtosis: The kurtosis for the specified channel(s).
4055 % o skewness: The skewness for the specified channel(s).
4058 WandExport MagickBooleanType MagickGetImageKurtosis(MagickWand *wand,
4059 double *kurtosis,double *skewness)
4064 assert(wand != (MagickWand *) NULL);
4065 assert(wand->signature == MagickWandSignature);
4066 if (wand->debug != MagickFalse)
4067 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4068 if (wand->images == (Image *) NULL)
4069 ThrowWandException(WandError,"ContainsNoImages",wand->name);
4070 status=GetImageKurtosis(wand->images,kurtosis,skewness,wand->exception);
4075 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4079 % M a g i c k G e t I m a g e M e a n %
4083 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4085 % MagickGetImageMean() gets the mean and standard deviation of one or more
4088 % The format of the MagickGetImageMean method is:
4090 % MagickBooleanType MagickGetImageMean(MagickWand *wand,double *mean,
4091 % double *standard_deviation)
4093 % A description of each parameter follows:
4095 % o wand: the magick wand.
4097 % o channel: the image channel(s).
4099 % o mean: The mean pixel value for the specified channel(s).
4101 % o standard_deviation: The standard deviation for the specified channel(s).
4104 WandExport MagickBooleanType MagickGetImageMean(MagickWand *wand,double *mean,
4105 double *standard_deviation)
4110 assert(wand != (MagickWand *) NULL);
4111 assert(wand->signature == MagickWandSignature);
4112 if (wand->debug != MagickFalse)
4113 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4114 if (wand->images == (Image *) NULL)
4115 ThrowWandException(WandError,"ContainsNoImages",wand->name);
4116 status=GetImageMean(wand->images,mean,standard_deviation,wand->exception);
4121 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4125 % M a g i c k G e t I m a g e R a n g e %
4129 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4131 % MagickGetImageRange() gets the range for one or more image channels.
4133 % The format of the MagickGetImageRange method is:
4135 % MagickBooleanType MagickGetImageRange(MagickWand *wand,double *minima,
4138 % A description of each parameter follows:
4140 % o wand: the magick wand.
4142 % o minima: The minimum pixel value for the specified channel(s).
4144 % o maxima: The maximum pixel value for the specified channel(s).
4147 WandExport MagickBooleanType MagickGetImageRange(MagickWand *wand,
4148 double *minima,double *maxima)
4153 assert(wand != (MagickWand *) NULL);
4154 assert(wand->signature == MagickWandSignature);
4155 if (wand->debug != MagickFalse)
4156 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4157 if (wand->images == (Image *) NULL)
4158 ThrowWandException(WandError,"ContainsNoImages",wand->name);
4159 status=GetImageRange(wand->images,minima,maxima,wand->exception);
4164 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4168 % M a g i c k G e t I m a g e S t a t i s t i c s %
4172 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4174 % MagickGetImageStatistics() returns statistics for each channel in the
4175 % image. The statistics include the channel depth, its minima and
4176 % maxima, the mean, the standard deviation, the kurtosis and the skewness.
4177 % You can access the red channel mean, for example, like this:
4179 % channel_statistics=MagickGetImageStatistics(wand);
4180 % red_mean=channel_statistics[RedPixelChannel].mean;
4182 % Use MagickRelinquishMemory() to free the statistics buffer.
4184 % The format of the MagickGetImageStatistics method is:
4186 % ChannelStatistics *MagickGetImageStatistics(MagickWand *wand)
4188 % A description of each parameter follows:
4190 % o wand: the magick wand.
4193 WandExport ChannelStatistics *MagickGetImageStatistics(MagickWand *wand)
4195 assert(wand != (MagickWand *) NULL);
4196 assert(wand->signature == MagickWandSignature);
4197 if (wand->debug != MagickFalse)
4198 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4199 if (wand->images == (Image *) NULL)
4201 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
4202 "ContainsNoImages","`%s'",wand->name);
4203 return((ChannelStatistics *) NULL);
4205 return(GetImageStatistics(wand->images,wand->exception));
4209 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4213 % M a g i c k G e t I m a g e C o l o r m a p C o l o r %
4217 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4219 % MagickGetImageColormapColor() returns the color of the specified colormap
4222 % The format of the MagickGetImageColormapColor method is:
4224 % MagickBooleanType MagickGetImageColormapColor(MagickWand *wand,
4225 % const size_t index,PixelWand *color)
4227 % A description of each parameter follows:
4229 % o wand: the magick wand.
4231 % o index: the offset into the image colormap.
4233 % o color: Return the colormap color in this wand.
4236 WandExport MagickBooleanType MagickGetImageColormapColor(MagickWand *wand,
4237 const size_t index,PixelWand *color)
4239 assert(wand != (MagickWand *) NULL);
4240 assert(wand->signature == MagickWandSignature);
4241 if (wand->debug != MagickFalse)
4242 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4243 if (wand->images == (Image *) NULL)
4244 ThrowWandException(WandError,"ContainsNoImages",wand->name);
4245 if ((wand->images->colormap == (PixelInfo *) NULL) ||
4246 (index >= wand->images->colors))
4248 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
4249 "InvalidColormapIndex","`%s'",wand->name);
4250 return(MagickFalse);
4252 PixelSetPixelColor(color,wand->images->colormap+index);
4257 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4261 % M a g i c k G e t I m a g e C o l o r s %
4265 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4267 % MagickGetImageColors() gets the number of unique colors in the image.
4269 % The format of the MagickGetImageColors method is:
4271 % size_t MagickGetImageColors(MagickWand *wand)
4273 % A description of each parameter follows:
4275 % o wand: the magick wand.
4278 WandExport size_t MagickGetImageColors(MagickWand *wand)
4280 assert(wand != (MagickWand *) NULL);
4281 assert(wand->signature == MagickWandSignature);
4282 if (wand->debug != MagickFalse)
4283 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4284 if (wand->images == (Image *) NULL)
4286 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
4287 "ContainsNoImages","`%s'",wand->name);
4290 return(GetNumberColors(wand->images,(FILE *) NULL,wand->exception));
4294 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4298 % M a g i c k G e t I m a g e C o l o r s p a c e %
4302 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4304 % MagickGetImageColorspace() gets the image colorspace.
4306 % The format of the MagickGetImageColorspace method is:
4308 % ColorspaceType MagickGetImageColorspace(MagickWand *wand)
4310 % A description of each parameter follows:
4312 % o wand: the magick wand.
4315 WandExport ColorspaceType MagickGetImageColorspace(MagickWand *wand)
4317 assert(wand != (MagickWand *) NULL);
4318 assert(wand->signature == MagickWandSignature);
4319 if (wand->debug != MagickFalse)
4320 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4321 if (wand->images == (Image *) NULL)
4323 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
4324 "ContainsNoImages","`%s'",wand->name);
4325 return(UndefinedColorspace);
4327 return(wand->images->colorspace);
4331 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4335 % M a g i c k G e t I m a g e C o m p o s e %
4339 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4341 % MagickGetImageCompose() returns the composite operator associated with the
4344 % The format of the MagickGetImageCompose method is:
4346 % CompositeOperator MagickGetImageCompose(MagickWand *wand)
4348 % A description of each parameter follows:
4350 % o wand: the magick wand.
4353 WandExport CompositeOperator MagickGetImageCompose(MagickWand *wand)
4355 assert(wand != (MagickWand *) NULL);
4356 assert(wand->signature == MagickWandSignature);
4357 if (wand->debug != MagickFalse)
4358 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4359 if (wand->images == (Image *) NULL)
4361 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
4362 "ContainsNoImages","`%s'",wand->name);
4363 return(UndefinedCompositeOp);
4365 return(wand->images->compose);
4369 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4373 % M a g i c k G e t I m a g e C o m p r e s s i o n %
4377 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4379 % MagickGetImageCompression() gets the image compression.
4381 % The format of the MagickGetImageCompression method is:
4383 % CompressionType MagickGetImageCompression(MagickWand *wand)
4385 % A description of each parameter follows:
4387 % o wand: the magick wand.
4390 WandExport CompressionType MagickGetImageCompression(MagickWand *wand)
4392 assert(wand != (MagickWand *) NULL);
4393 assert(wand->signature == MagickWandSignature);
4394 if (wand->debug != MagickFalse)
4395 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4396 if (wand->images == (Image *) NULL)
4398 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
4399 "ContainsNoImages","`%s'",wand->name);
4400 return(UndefinedCompression);
4402 return(wand->images->compression);
4406 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4410 % M a g i c k G e t I m a g e C o m p r e s s i o n Q u a l i t y %
4414 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4416 % MagickGetImageCompressionQuality() gets the image compression quality.
4418 % The format of the MagickGetImageCompressionQuality method is:
4420 % size_t MagickGetImageCompressionQuality(MagickWand *wand)
4422 % A description of each parameter follows:
4424 % o wand: the magick wand.
4427 WandExport size_t MagickGetImageCompressionQuality(MagickWand *wand)
4429 assert(wand != (MagickWand *) NULL);
4430 assert(wand->signature == MagickWandSignature);
4431 if (wand->debug != MagickFalse)
4432 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4433 if (wand->images == (Image *) NULL)
4435 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
4436 "ContainsNoImages","`%s'",wand->name);
4439 return(wand->images->quality);
4443 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4447 % M a g i c k G e t I m a g e D e l a y %
4451 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4453 % MagickGetImageDelay() gets the image delay.
4455 % The format of the MagickGetImageDelay method is:
4457 % size_t MagickGetImageDelay(MagickWand *wand)
4459 % A description of each parameter follows:
4461 % o wand: the magick wand.
4464 WandExport size_t MagickGetImageDelay(MagickWand *wand)
4466 assert(wand != (MagickWand *) NULL);
4467 assert(wand->signature == MagickWandSignature);
4468 if (wand->debug != MagickFalse)
4469 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4470 if (wand->images == (Image *) NULL)
4471 ThrowWandException(WandError,"ContainsNoImages",wand->name);
4472 return(wand->images->delay);
4476 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4480 % M a g i c k G e t I m a g e D e p t h %
4484 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4486 % MagickGetImageDepth() gets the image depth.
4488 % The format of the MagickGetImageDepth method is:
4490 % size_t MagickGetImageDepth(MagickWand *wand)
4492 % A description of each parameter follows:
4494 % o wand: the magick wand.
4497 WandExport size_t MagickGetImageDepth(MagickWand *wand)
4499 assert(wand != (MagickWand *) NULL);
4500 assert(wand->signature == MagickWandSignature);
4501 if (wand->debug != MagickFalse)
4502 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4503 if (wand->images == (Image *) NULL)
4504 ThrowWandException(WandError,"ContainsNoImages",wand->name);
4505 return(wand->images->depth);
4509 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4513 % M a g i c k G e t I m a g e D i s p o s e %
4517 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4519 % MagickGetImageDispose() gets the image disposal method.
4521 % The format of the MagickGetImageDispose method is:
4523 % DisposeType MagickGetImageDispose(MagickWand *wand)
4525 % A description of each parameter follows:
4527 % o wand: the magick wand.
4530 WandExport DisposeType MagickGetImageDispose(MagickWand *wand)
4532 assert(wand != (MagickWand *) NULL);
4533 assert(wand->signature == MagickWandSignature);
4534 if (wand->debug != MagickFalse)
4535 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4536 if (wand->images == (Image *) NULL)
4538 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
4539 "ContainsNoImages","`%s'",wand->name);
4540 return(UndefinedDispose);
4542 return((DisposeType) wand->images->dispose);
4546 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4550 % M a g i c k G e t I m a g e D i s t o r t i o n %
4554 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4556 % MagickGetImageDistortion() compares an image to a reconstructed image and
4557 % returns the specified distortion metric.
4559 % The format of the MagickGetImageDistortion method is:
4561 % MagickBooleanType MagickGetImageDistortion(MagickWand *wand,
4562 % const MagickWand *reference,const MetricType metric,
4563 % double *distortion)
4565 % A description of each parameter follows:
4567 % o wand: the magick wand.
4569 % o reference: the reference wand.
4571 % o metric: the metric.
4573 % o distortion: the computed distortion between the images.
4576 WandExport MagickBooleanType MagickGetImageDistortion(MagickWand *wand,
4577 const MagickWand *reference,const MetricType metric,double *distortion)
4582 assert(wand != (MagickWand *) NULL);
4583 assert(wand->signature == MagickWandSignature);
4584 if (wand->debug != MagickFalse)
4585 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4586 if ((wand->images == (Image *) NULL) || (reference->images == (Image *) NULL))
4587 ThrowWandException(WandError,"ContainsNoImages",wand->name);
4588 status=GetImageDistortion(wand->images,reference->images,metric,distortion,
4594 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4598 % M a g i c k G e t I m a g e D i s t o r t i o n s %
4602 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4604 % MagickGetImageDistortions() compares one or more pixel channels of an
4605 % image to a reconstructed image and returns the specified distortion metrics.
4607 % Use MagickRelinquishMemory() to free the metrics when you are done with them.
4609 % The format of the MagickGetImageDistortion method is:
4611 % double *MagickGetImageDistortion(MagickWand *wand,
4612 % const MagickWand *reference,const MetricType metric)
4614 % A description of each parameter follows:
4616 % o wand: the magick wand.
4618 % o reference: the reference wand.
4620 % o metric: the metric.
4623 WandExport double *MagickGetImageDistortions(MagickWand *wand,
4624 const MagickWand *reference,const MetricType metric)
4627 *channel_distortion;
4629 assert(wand != (MagickWand *) NULL);
4630 assert(wand->signature == MagickWandSignature);
4631 if (wand->debug != MagickFalse)
4632 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4633 assert(reference != (MagickWand *) NULL);
4634 assert(reference->signature == MagickWandSignature);
4635 if ((wand->images == (Image *) NULL) || (reference->images == (Image *) NULL))
4637 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
4638 "ContainsNoImages","`%s'",wand->name);
4639 return((double *) NULL);
4641 channel_distortion=GetImageDistortions(wand->images,reference->images,
4642 metric,wand->exception);
4643 return(channel_distortion);
4647 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4651 % M a g i c k G e t I m a g e E n d i a n %
4655 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4657 % MagickGetImageEndian() gets the image endian.
4659 % The format of the MagickGetImageEndian method is:
4661 % EndianType MagickGetImageEndian(MagickWand *wand)
4663 % A description of each parameter follows:
4665 % o wand: the magick wand.
4668 WandExport EndianType MagickGetImageEndian(MagickWand *wand)
4670 assert(wand != (MagickWand *) NULL);
4671 assert(wand->signature == MagickWandSignature);
4672 if (wand->debug != MagickFalse)
4673 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4674 if (wand->images == (Image *) NULL)
4676 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
4677 "ContainsNoImages","`%s'",wand->name);
4678 return(UndefinedEndian);
4680 return(wand->images->endian);
4684 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4688 % M a g i c k G e t I m a g e F i l e n a m e %
4692 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4694 % MagickGetImageFilename() returns the filename of a particular image in a
4697 % The format of the MagickGetImageFilename method is:
4699 % char *MagickGetImageFilename(MagickWand *wand)
4701 % A description of each parameter follows:
4703 % o wand: the magick wand.
4706 WandExport char *MagickGetImageFilename(MagickWand *wand)
4708 assert(wand != (MagickWand *) NULL);
4709 assert(wand->signature == MagickWandSignature);
4710 if (wand->debug != MagickFalse)
4711 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4712 if (wand->images == (Image *) NULL)
4714 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
4715 "ContainsNoImages","`%s'",wand->name);
4716 return((char *) NULL);
4718 return(AcquireString(wand->images->filename));
4722 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4726 % M a g i c k G e t I m a g e F o r m a t %
4730 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4732 % MagickGetImageFormat() returns the format of a particular image in a
4735 % The format of the MagickGetImageFormat method is:
4737 % char *MagickGetImageFormat(MagickWand *wand)
4739 % A description of each parameter follows:
4741 % o wand: the magick wand.
4744 WandExport char *MagickGetImageFormat(MagickWand *wand)
4746 assert(wand != (MagickWand *) NULL);
4747 assert(wand->signature == MagickWandSignature);
4748 if (wand->debug != MagickFalse)
4749 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4750 if (wand->images == (Image *) NULL)
4752 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
4753 "ContainsNoImages","`%s'",wand->name);
4754 return((char *) NULL);
4756 return(AcquireString(wand->images->magick));
4760 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4764 % M a g i c k G e t I m a g e F u z z %
4768 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4770 % MagickGetImageFuzz() gets the image fuzz.
4772 % The format of the MagickGetImageFuzz method is:
4774 % double MagickGetImageFuzz(MagickWand *wand)
4776 % A description of each parameter follows:
4778 % o wand: the magick wand.
4781 WandExport double MagickGetImageFuzz(MagickWand *wand)
4783 assert(wand != (MagickWand *) NULL);
4784 assert(wand->signature == MagickWandSignature);
4785 if (wand->debug != MagickFalse)
4786 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4787 if (wand->images == (Image *) NULL)
4789 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
4790 "ContainsNoImages","`%s'",wand->name);
4793 return(wand->images->fuzz);
4797 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4801 % M a g i c k G e t I m a g e G a m m a %
4805 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4807 % MagickGetImageGamma() gets the image gamma.
4809 % The format of the MagickGetImageGamma method is:
4811 % double MagickGetImageGamma(MagickWand *wand)
4813 % A description of each parameter follows:
4815 % o wand: the magick wand.
4818 WandExport double MagickGetImageGamma(MagickWand *wand)
4820 assert(wand != (MagickWand *) NULL);
4821 assert(wand->signature == MagickWandSignature);
4822 if (wand->debug != MagickFalse)
4823 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4824 if (wand->images == (Image *) NULL)
4826 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
4827 "ContainsNoImages","`%s'",wand->name);
4830 return(wand->images->gamma);
4834 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4838 % M a g i c k G e t I m a g e G r a v i t y %
4842 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4844 % MagickGetImageGravity() gets the image gravity.
4846 % The format of the MagickGetImageGravity method is:
4848 % GravityType MagickGetImageGravity(MagickWand *wand)
4850 % A description of each parameter follows:
4852 % o wand: the magick wand.
4855 WandExport GravityType MagickGetImageGravity(MagickWand *wand)
4857 assert(wand != (MagickWand *) NULL);
4858 assert(wand->signature == MagickWandSignature);
4859 if (wand->debug != MagickFalse)
4860 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4861 if (wand->images == (Image *) NULL)
4863 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
4864 "ContainsNoImages","`%s'",wand->name);
4865 return(UndefinedGravity);
4867 return(wand->images->gravity);
4871 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4875 % M a g i c k G e t I m a g e G r e e n P r i m a r y %
4879 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4881 % MagickGetImageGreenPrimary() returns the chromaticy green primary point.
4883 % The format of the MagickGetImageGreenPrimary method is:
4885 % MagickBooleanType MagickGetImageGreenPrimary(MagickWand *wand,double *x,
4888 % A description of each parameter follows:
4890 % o wand: the magick wand.
4892 % o x: the chromaticity green primary x-point.
4894 % o y: the chromaticity green primary y-point.
4897 WandExport MagickBooleanType MagickGetImageGreenPrimary(MagickWand *wand,
4898 double *x,double *y)
4900 assert(wand != (MagickWand *) NULL);
4901 assert(wand->signature == MagickWandSignature);
4902 if (wand->debug != MagickFalse)
4903 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4904 if (wand->images == (Image *) NULL)
4905 ThrowWandException(WandError,"ContainsNoImages",wand->name);
4906 *x=wand->images->chromaticity.green_primary.x;
4907 *y=wand->images->chromaticity.green_primary.y;
4912 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4916 % M a g i c k G e t I m a g e H e i g h t %
4920 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4922 % MagickGetImageHeight() returns the image height.
4924 % The format of the MagickGetImageHeight method is:
4926 % size_t MagickGetImageHeight(MagickWand *wand)
4928 % A description of each parameter follows:
4930 % o wand: the magick wand.
4933 WandExport size_t MagickGetImageHeight(MagickWand *wand)
4935 assert(wand != (MagickWand *) NULL);
4936 assert(wand->signature == MagickWandSignature);
4937 if (wand->debug != MagickFalse)
4938 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4939 if (wand->images == (Image *) NULL)
4940 ThrowWandException(WandError,"ContainsNoImages",wand->name);
4941 return(wand->images->rows);
4945 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4949 % M a g i c k G e t I m a g e H i s t o g r a m %
4953 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4955 % MagickGetImageHistogram() returns the image histogram as an array of
4958 % The format of the MagickGetImageHistogram method is:
4960 % PixelWand **MagickGetImageHistogram(MagickWand *wand,
4961 % size_t *number_colors)
4963 % A description of each parameter follows:
4965 % o wand: the magick wand.
4967 % o number_colors: the number of unique colors in the image and the number
4968 % of pixel wands returned.
4971 WandExport PixelWand **MagickGetImageHistogram(MagickWand *wand,
4972 size_t *number_colors)
4983 assert(wand != (MagickWand *) NULL);
4984 assert(wand->signature == MagickWandSignature);
4985 if (wand->debug != MagickFalse)
4986 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
4987 if (wand->images == (Image *) NULL)
4989 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
4990 "ContainsNoImages","`%s'",wand->name);
4991 return((PixelWand **) NULL);
4993 histogram=GetImageHistogram(wand->images,number_colors,wand->exception);
4994 if (histogram == (PixelInfo *) NULL)
4995 return((PixelWand **) NULL);
4996 pixel_wands=NewPixelWands(*number_colors);
4997 for (i=0; i < (ssize_t) *number_colors; i++)
4999 PixelSetPixelColor(pixel_wands[i],&histogram[i]);
5000 PixelSetColorCount(pixel_wands[i],(size_t) histogram[i].count);
5002 histogram=(PixelInfo *) RelinquishMagickMemory(histogram);
5003 return(pixel_wands);
5007 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5011 % M a g i c k G e t I m a g e I n t e r l a c e S c h e m e %
5015 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5017 % MagickGetImageInterlaceScheme() gets the image interlace scheme.
5019 % The format of the MagickGetImageInterlaceScheme method is:
5021 % InterlaceType MagickGetImageInterlaceScheme(MagickWand *wand)
5023 % A description of each parameter follows:
5025 % o wand: the magick wand.
5028 WandExport InterlaceType MagickGetImageInterlaceScheme(MagickWand *wand)
5030 assert(wand != (MagickWand *) NULL);
5031 assert(wand->signature == MagickWandSignature);
5032 if (wand->debug != MagickFalse)
5033 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5034 if (wand->images == (Image *) NULL)
5036 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
5037 "ContainsNoImages","`%s'",wand->name);
5038 return(UndefinedInterlace);
5040 return(wand->images->interlace);
5044 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5048 % M a g i c k G e t I m a g e I n t e r p o l a t e M e t h o d %
5052 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5054 % MagickGetImageInterpolateMethod() returns the interpolation method for the
5057 % The format of the MagickGetImageInterpolateMethod method is:
5059 % PixelInterpolateMethod MagickGetImagePixelInterpolateMethod(
5062 % A description of each parameter follows:
5064 % o wand: the magick wand.
5067 WandExport PixelInterpolateMethod MagickGetImageInterpolateMethod(
5070 assert(wand != (MagickWand *) NULL);
5071 assert(wand->signature == MagickWandSignature);
5072 if (wand->debug != MagickFalse)
5073 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5074 if (wand->images == (Image *) NULL)
5076 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
5077 "ContainsNoImages","`%s'",wand->name);
5078 return(UndefinedInterpolatePixel);
5080 return(wand->images->interpolate);
5084 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5088 % M a g i c k G e t I m a g e I t e r a t i o n s %
5092 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5094 % MagickGetImageIterations() gets the image iterations.
5096 % The format of the MagickGetImageIterations method is:
5098 % size_t MagickGetImageIterations(MagickWand *wand)
5100 % A description of each parameter follows:
5102 % o wand: the magick wand.
5105 WandExport size_t MagickGetImageIterations(MagickWand *wand)
5107 assert(wand != (MagickWand *) NULL);
5108 assert(wand->signature == MagickWandSignature);
5109 if (wand->debug != MagickFalse)
5110 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5111 if (wand->images == (Image *) NULL)
5112 ThrowWandException(WandError,"ContainsNoImages",wand->name);
5113 return(wand->images->iterations);
5117 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5121 % M a g i c k G e t I m a g e L e n g t h %
5125 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5127 % MagickGetImageLength() returns the image length in bytes.
5129 % The format of the MagickGetImageLength method is:
5131 % MagickBooleanType MagickGetImageLength(MagickWand *wand,
5132 % MagickSizeType *length)
5134 % A description of each parameter follows:
5136 % o wand: the magick wand.
5138 % o length: the image length in bytes.
5141 WandExport MagickBooleanType MagickGetImageLength(MagickWand *wand,
5142 MagickSizeType *length)
5144 assert(wand != (MagickWand *) NULL);
5145 assert(wand->signature == MagickWandSignature);
5146 if (wand->debug != MagickFalse)
5147 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5148 if (wand->images == (Image *) NULL)
5149 ThrowWandException(WandError,"ContainsNoImages",wand->name);
5150 *length=GetBlobSize(wand->images);
5155 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5159 % M a g i c k G e t I m a g e M a t t e C o l o r %
5163 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5165 % MagickGetImageMatteColor() returns the image matte color.
5167 % The format of the MagickGetImageMatteColor method is:
5169 % MagickBooleanType MagickGetImagematteColor(MagickWand *wand,
5170 % PixelWand *matte_color)
5172 % A description of each parameter follows:
5174 % o wand: the magick wand.
5176 % o matte_color: Return the matte color.
5179 WandExport MagickBooleanType MagickGetImageMatteColor(MagickWand *wand,
5180 PixelWand *matte_color)
5182 assert(wand != (MagickWand *) NULL);
5183 assert(wand->signature == MagickWandSignature);
5184 if (wand->debug != MagickFalse)
5185 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5186 if (wand->images == (Image *) NULL)
5187 ThrowWandException(WandError,"ContainsNoImages",wand->name);
5188 PixelSetPixelColor(matte_color,&wand->images->matte_color);
5193 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5197 % M a g i c k G e t I m a g e O r i e n t a t i o n %
5201 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5203 % MagickGetImageOrientation() returns the image orientation.
5205 % The format of the MagickGetImageOrientation method is:
5207 % OrientationType MagickGetImageOrientation(MagickWand *wand)
5209 % A description of each parameter follows:
5211 % o wand: the magick wand.
5214 WandExport OrientationType MagickGetImageOrientation(MagickWand *wand)
5216 assert(wand != (MagickWand *) NULL);
5217 assert(wand->signature == MagickWandSignature);
5218 if (wand->debug != MagickFalse)
5219 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5220 if (wand->images == (Image *) NULL)
5222 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
5223 "ContainsNoImages","`%s'",wand->name);
5224 return(UndefinedOrientation);
5226 return(wand->images->orientation);
5230 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5234 % M a g i c k G e t I m a g e P a g e %
5238 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5240 % MagickGetImagePage() returns the page geometry associated with the image.
5242 % The format of the MagickGetImagePage method is:
5244 % MagickBooleanType MagickGetImagePage(MagickWand *wand,
5245 % size_t *width,size_t *height,ssize_t *x,ssize_t *y)
5247 % A description of each parameter follows:
5249 % o wand: the magick wand.
5251 % o width: the page width.
5253 % o height: the page height.
5255 % o x: the page x-offset.
5257 % o y: the page y-offset.
5260 WandExport MagickBooleanType MagickGetImagePage(MagickWand *wand,
5261 size_t *width,size_t *height,ssize_t *x,ssize_t *y)
5263 assert(wand != (const MagickWand *) NULL);
5264 assert(wand->signature == MagickWandSignature);
5265 if (wand->debug != MagickFalse)
5266 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5267 if (wand->images == (Image *) NULL)
5268 ThrowWandException(WandError,"ContainsNoImages",wand->name);
5269 *width=wand->images->page.width;
5270 *height=wand->images->page.height;
5271 *x=wand->images->page.x;
5272 *y=wand->images->page.y;
5277 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5281 % M a g i c k G e t I m a g e P i x e l C o l o r %
5285 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5287 % MagickGetImagePixelColor() returns the color of the specified pixel.
5289 % The format of the MagickGetImagePixelColor method is:
5291 % MagickBooleanType MagickGetImagePixelColor(MagickWand *wand,
5292 % const ssize_t x,const ssize_t y,PixelWand *color)
5294 % A description of each parameter follows:
5296 % o wand: the magick wand.
5298 % o x,y: the pixel offset into the image.
5300 % o color: Return the colormap color in this wand.
5303 WandExport MagickBooleanType MagickGetImagePixelColor(MagickWand *wand,
5304 const ssize_t x,const ssize_t y,PixelWand *color)
5306 register const Quantum
5312 assert(wand != (MagickWand *) NULL);
5313 assert(wand->signature == MagickWandSignature);
5314 if (wand->debug != MagickFalse)
5315 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5316 if (wand->images == (Image *) NULL)
5317 ThrowWandException(WandError,"ContainsNoImages",wand->name);
5318 image_view=AcquireVirtualCacheView(wand->images,wand->exception);
5319 p=GetCacheViewVirtualPixels(image_view,x,y,1,1,wand->exception);
5320 if (p == (const Quantum *) NULL)
5322 image_view=DestroyCacheView(image_view);
5323 return(MagickFalse);
5325 PixelSetQuantumPixel(wand->images,p,color);
5326 image_view=DestroyCacheView(image_view);
5331 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5335 % M a g i c k G e t I m a g e R e d P r i m a r y %
5339 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5341 % MagickGetImageRedPrimary() returns the chromaticy red primary point.
5343 % The format of the MagickGetImageRedPrimary method is:
5345 % MagickBooleanType MagickGetImageRedPrimary(MagickWand *wand,double *x,
5348 % A description of each parameter follows:
5350 % o wand: the magick wand.
5352 % o x: the chromaticity red primary x-point.
5354 % o y: the chromaticity red primary y-point.
5357 WandExport MagickBooleanType MagickGetImageRedPrimary(MagickWand *wand,
5358 double *x,double *y)
5360 assert(wand != (MagickWand *) NULL);
5361 assert(wand->signature == MagickWandSignature);
5362 if (wand->debug != MagickFalse)
5363 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5364 if (wand->images == (Image *) NULL)
5365 ThrowWandException(WandError,"ContainsNoImages",wand->name);
5366 *x=wand->images->chromaticity.red_primary.x;
5367 *y=wand->images->chromaticity.red_primary.y;
5372 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5376 % M a g i c k G e t I m a g e R e g i o n %
5380 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5382 % MagickGetImageRegion() extracts a region of the image and returns it as a
5385 % The format of the MagickGetImageRegion method is:
5387 % MagickWand *MagickGetImageRegion(MagickWand *wand,
5388 % const size_t width,const size_t height,const ssize_t x,
5391 % A description of each parameter follows:
5393 % o wand: the magick wand.
5395 % o width: the region width.
5397 % o height: the region height.
5399 % o x: the region x offset.
5401 % o y: the region y offset.
5404 WandExport MagickWand *MagickGetImageRegion(MagickWand *wand,
5405 const size_t width,const size_t height,const ssize_t x,
5414 assert(wand != (MagickWand *) NULL);
5415 assert(wand->signature == MagickWandSignature);
5416 if (wand->debug != MagickFalse)
5417 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5418 if (wand->images == (Image *) NULL)
5419 return((MagickWand *) NULL);
5421 region.height=height;
5424 region_image=CropImage(wand->images,®ion,wand->exception);
5425 if (region_image == (Image *) NULL)
5426 return((MagickWand *) NULL);
5427 return(CloneMagickWandFromImages(wand,region_image));
5431 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5435 % M a g i c k G e t I m a g e R e n d e r i n g I n t e n t %
5439 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5441 % MagickGetImageRenderingIntent() gets the image rendering intent.
5443 % The format of the MagickGetImageRenderingIntent method is:
5445 % RenderingIntent MagickGetImageRenderingIntent(MagickWand *wand)
5447 % A description of each parameter follows:
5449 % o wand: the magick wand.
5452 WandExport RenderingIntent MagickGetImageRenderingIntent(MagickWand *wand)
5454 assert(wand != (MagickWand *) NULL);
5455 assert(wand->signature == MagickWandSignature);
5456 if (wand->debug != MagickFalse)
5457 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5458 if (wand->images == (Image *) NULL)
5460 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
5461 "ContainsNoImages","`%s'",wand->name);
5462 return(UndefinedIntent);
5464 return((RenderingIntent) wand->images->rendering_intent);
5468 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5472 % M a g i c k G e t I m a g e R e s o l u t i o n %
5476 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5478 % MagickGetImageResolution() gets the image X and Y resolution.
5480 % The format of the MagickGetImageResolution method is:
5482 % MagickBooleanType MagickGetImageResolution(MagickWand *wand,double *x,
5485 % A description of each parameter follows:
5487 % o wand: the magick wand.
5489 % o x: the image x-resolution.
5491 % o y: the image y-resolution.
5494 WandExport MagickBooleanType MagickGetImageResolution(MagickWand *wand,
5495 double *x,double *y)
5497 assert(wand != (MagickWand *) NULL);
5498 assert(wand->signature == MagickWandSignature);
5499 if (wand->debug != MagickFalse)
5500 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5501 if (wand->images == (Image *) NULL)
5502 ThrowWandException(WandError,"ContainsNoImages",wand->name);
5503 *x=wand->images->resolution.x;
5504 *y=wand->images->resolution.y;
5509 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5513 % M a g i c k G e t I m a g e S c e n e %
5517 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5519 % MagickGetImageScene() gets the image scene.
5521 % The format of the MagickGetImageScene method is:
5523 % size_t MagickGetImageScene(MagickWand *wand)
5525 % A description of each parameter follows:
5527 % o wand: the magick wand.
5530 WandExport size_t MagickGetImageScene(MagickWand *wand)
5532 assert(wand != (MagickWand *) NULL);
5533 assert(wand->signature == MagickWandSignature);
5534 if (wand->debug != MagickFalse)
5535 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5536 if (wand->images == (Image *) NULL)
5537 ThrowWandException(WandError,"ContainsNoImages",wand->name);
5538 return(wand->images->scene);
5542 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5546 % M a g i c k G e t I m a g e S i g n a t u r e %
5550 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5552 % MagickGetImageSignature() generates an SHA-256 message digest for the image
5555 % The format of the MagickGetImageSignature method is:
5557 % char *MagickGetImageSignature(MagickWand *wand)
5559 % A description of each parameter follows:
5561 % o wand: the magick wand.
5564 WandExport char *MagickGetImageSignature(MagickWand *wand)
5572 assert(wand != (MagickWand *) NULL);
5573 assert(wand->signature == MagickWandSignature);
5574 if (wand->debug != MagickFalse)
5575 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5576 if (wand->images == (Image *) NULL)
5578 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
5579 "ContainsNoImages","`%s'",wand->name);
5580 return((char *) NULL);
5582 status=SignatureImage(wand->images,wand->exception);
5583 if (status == MagickFalse)
5584 return((char *) NULL);
5585 value=GetImageProperty(wand->images,"signature",wand->exception);
5586 if (value == (const char *) NULL)
5587 return((char *) NULL);
5588 return(AcquireString(value));
5592 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5596 % M a g i c k G e t I m a g e T i c k s P e r S e c o n d %
5600 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5602 % MagickGetImageTicksPerSecond() gets the image ticks-per-second.
5604 % The format of the MagickGetImageTicksPerSecond method is:
5606 % size_t MagickGetImageTicksPerSecond(MagickWand *wand)
5608 % A description of each parameter follows:
5610 % o wand: the magick wand.
5613 WandExport size_t MagickGetImageTicksPerSecond(MagickWand *wand)
5615 assert(wand != (MagickWand *) NULL);
5616 assert(wand->signature == MagickWandSignature);
5617 if (wand->debug != MagickFalse)
5618 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5619 if (wand->images == (Image *) NULL)
5620 ThrowWandException(WandError,"ContainsNoImages",wand->name);
5621 return((size_t) wand->images->ticks_per_second);
5625 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5629 % M a g i c k G e t I m a g e T y p e %
5633 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5635 % MagickGetImageType() gets the potential image type:
5637 % Bilevel Grayscale GrayscaleMatte
5638 % Palette PaletteMatte TrueColor
5639 % TrueColorMatte ColorSeparation ColorSeparationMatte
5641 % The format of the MagickGetImageType method is:
5643 % ImageType MagickGetImageType(MagickWand *wand)
5645 % A description of each parameter follows:
5647 % o wand: the magick wand.
5650 WandExport ImageType MagickGetImageType(MagickWand *wand)
5652 assert(wand != (MagickWand *) NULL);
5653 assert(wand->signature == MagickWandSignature);
5654 if (wand->debug != MagickFalse)
5655 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5656 if (wand->images == (Image *) NULL)
5658 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
5659 "ContainsNoImages","`%s'",wand->name);
5660 return(UndefinedType);
5662 return(GetImageType(wand->images));
5666 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5670 % M a g i c k G e t I m a g e U n i t s %
5674 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5676 % MagickGetImageUnits() gets the image units of resolution.
5678 % The format of the MagickGetImageUnits method is:
5680 % ResolutionType MagickGetImageUnits(MagickWand *wand)
5682 % A description of each parameter follows:
5684 % o wand: the magick wand.
5687 WandExport ResolutionType MagickGetImageUnits(MagickWand *wand)
5689 assert(wand != (MagickWand *) NULL);
5690 assert(wand->signature == MagickWandSignature);
5691 if (wand->debug != MagickFalse)
5692 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5693 if (wand->images == (Image *) NULL)
5695 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
5696 "ContainsNoImages","`%s'",wand->name);
5697 return(UndefinedResolution);
5699 return(wand->images->units);
5703 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5707 % M a g i c k G e t I m a g e V i r t u a l P i x e l M e t h o d %
5711 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5713 % MagickGetImageVirtualPixelMethod() returns the virtual pixel method for the
5716 % The format of the MagickGetImageVirtualPixelMethod method is:
5718 % VirtualPixelMethod MagickGetImageVirtualPixelMethod(MagickWand *wand)
5720 % A description of each parameter follows:
5722 % o wand: the magick wand.
5725 WandExport VirtualPixelMethod MagickGetImageVirtualPixelMethod(MagickWand *wand)
5727 assert(wand != (MagickWand *) NULL);
5728 assert(wand->signature == MagickWandSignature);
5729 if (wand->debug != MagickFalse)
5730 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5731 if (wand->images == (Image *) NULL)
5733 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
5734 "ContainsNoImages","`%s'",wand->name);
5735 return(UndefinedVirtualPixelMethod);
5737 return(GetImageVirtualPixelMethod(wand->images));
5741 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5745 % M a g i c k G e t I m a g e W h i t e P o i n t %
5749 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5751 % MagickGetImageWhitePoint() returns the chromaticy white point.
5753 % The format of the MagickGetImageWhitePoint method is:
5755 % MagickBooleanType MagickGetImageWhitePoint(MagickWand *wand,double *x,
5758 % A description of each parameter follows:
5760 % o wand: the magick wand.
5762 % o x: the chromaticity white x-point.
5764 % o y: the chromaticity white y-point.
5767 WandExport MagickBooleanType MagickGetImageWhitePoint(MagickWand *wand,
5768 double *x,double *y)
5770 assert(wand != (MagickWand *) NULL);
5771 assert(wand->signature == MagickWandSignature);
5772 if (wand->debug != MagickFalse)
5773 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5774 if (wand->images == (Image *) NULL)
5775 ThrowWandException(WandError,"ContainsNoImages",wand->name);
5776 *x=wand->images->chromaticity.white_point.x;
5777 *y=wand->images->chromaticity.white_point.y;
5782 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5786 % M a g i c k G e t I m a g e W i d t h %
5790 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5792 % MagickGetImageWidth() returns the image width.
5794 % The format of the MagickGetImageWidth method is:
5796 % size_t MagickGetImageWidth(MagickWand *wand)
5798 % A description of each parameter follows:
5800 % o wand: the magick wand.
5803 WandExport size_t MagickGetImageWidth(MagickWand *wand)
5805 assert(wand != (MagickWand *) NULL);
5806 assert(wand->signature == MagickWandSignature);
5807 if (wand->debug != MagickFalse)
5808 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5809 if (wand->images == (Image *) NULL)
5810 ThrowWandException(WandError,"ContainsNoImages",wand->name);
5811 return(wand->images->columns);
5815 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5819 % M a g i c k G e t N u m b e r I m a g e s %
5823 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5825 % MagickGetNumberImages() returns the number of images associated with a
5828 % The format of the MagickGetNumberImages method is:
5830 % size_t MagickGetNumberImages(MagickWand *wand)
5832 % A description of each parameter follows:
5834 % o wand: the magick wand.
5837 WandExport size_t MagickGetNumberImages(MagickWand *wand)
5839 assert(wand != (MagickWand *) NULL);
5840 assert(wand->signature == MagickWandSignature);
5841 if (wand->debug != MagickFalse)
5842 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5843 return(GetImageListLength(wand->images));
5847 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5851 % M a g i c k I m a g e G e t T o t a l I n k D e n s i t y %
5855 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5857 % MagickGetImageTotalInkDensity() gets the image total ink density.
5859 % The format of the MagickGetImageTotalInkDensity method is:
5861 % double MagickGetImageTotalInkDensity(MagickWand *wand)
5863 % A description of each parameter follows:
5865 % o wand: the magick wand.
5868 WandExport double MagickGetImageTotalInkDensity(MagickWand *wand)
5870 assert(wand != (MagickWand *) NULL);
5871 assert(wand->signature == MagickWandSignature);
5872 if (wand->debug != MagickFalse)
5873 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5874 if (wand->images == (Image *) NULL)
5876 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
5877 "ContainsNoImages","`%s'",wand->name);
5880 return(GetImageTotalInkDensity(wand->images,wand->exception));
5884 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5888 % M a g i c k H a l d C l u t I m a g e %
5892 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5894 % MagickHaldClutImage() replaces colors in the image from a Hald color lookup
5895 % table. A Hald color lookup table is a 3-dimensional color cube mapped to 2
5896 % dimensions. Create it with the HALD coder. You can apply any color
5897 % transformation to the Hald image and then use this method to apply the
5898 % transform to the image.
5900 % The format of the MagickHaldClutImage method is:
5902 % MagickBooleanType MagickHaldClutImage(MagickWand *wand,
5903 % const MagickWand *hald_wand)
5905 % A description of each parameter follows:
5907 % o wand: the magick wand.
5909 % o hald_image: the hald CLUT image.
5912 WandExport MagickBooleanType MagickHaldClutImage(MagickWand *wand,
5913 const MagickWand *hald_wand)
5918 assert(wand != (MagickWand *) NULL);
5919 assert(wand->signature == MagickWandSignature);
5920 if (wand->debug != MagickFalse)
5921 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5922 if ((wand->images == (Image *) NULL) || (hald_wand->images == (Image *) NULL))
5923 ThrowWandException(WandError,"ContainsNoImages",wand->name);
5924 status=HaldClutImage(wand->images,hald_wand->images,wand->exception);
5929 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5933 % M a g i c k H a s N e x t I m a g e %
5937 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5939 % MagickHasNextImage() returns MagickTrue if the wand has more images when
5940 % traversing the list in the forward direction
5942 % The format of the MagickHasNextImage method is:
5944 % MagickBooleanType MagickHasNextImage(MagickWand *wand)
5946 % A description of each parameter follows:
5948 % o wand: the magick wand.
5951 WandExport MagickBooleanType MagickHasNextImage(MagickWand *wand)
5953 assert(wand != (MagickWand *) NULL);
5954 assert(wand->signature == MagickWandSignature);
5955 if (wand->debug != MagickFalse)
5956 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5957 if (wand->images == (Image *) NULL)
5958 ThrowWandException(WandError,"ContainsNoImages",wand->name);
5959 if (GetNextImageInList(wand->images) == (Image *) NULL)
5960 return(MagickFalse);
5965 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5969 % M a g i c k H a s P r e v i o u s I m a g e %
5973 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5975 % MagickHasPreviousImage() returns MagickTrue if the wand has more images when
5976 % traversing the list in the reverse direction
5978 % The format of the MagickHasPreviousImage method is:
5980 % MagickBooleanType MagickHasPreviousImage(MagickWand *wand)
5982 % A description of each parameter follows:
5984 % o wand: the magick wand.
5987 WandExport MagickBooleanType MagickHasPreviousImage(MagickWand *wand)
5989 assert(wand != (MagickWand *) NULL);
5990 assert(wand->signature == MagickWandSignature);
5991 if (wand->debug != MagickFalse)
5992 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
5993 if (wand->images == (Image *) NULL)
5994 ThrowWandException(WandError,"ContainsNoImages",wand->name);
5995 if (GetPreviousImageInList(wand->images) == (Image *) NULL)
5996 return(MagickFalse);
6001 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6005 % M a g i c k I d e n t i f y I m a g e %
6009 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6011 % MagickIdentifyImage() identifies an image by printing its attributes to the
6012 % file. Attributes include the image width, height, size, and others.
6014 % The format of the MagickIdentifyImage method is:
6016 % const char *MagickIdentifyImage(MagickWand *wand)
6018 % A description of each parameter follows:
6020 % o wand: the magick wand.
6023 WandExport char *MagickIdentifyImage(MagickWand *wand)
6027 filename[MagickPathExtent];
6035 assert(wand != (MagickWand *) NULL);
6036 assert(wand->signature == MagickWandSignature);
6037 if (wand->debug != MagickFalse)
6038 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
6039 if (wand->images == (Image *) NULL)
6041 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
6042 "ContainsNoImages","`%s'",wand->name);
6043 return((char *) NULL);
6045 description=(char *) NULL;
6046 unique_file=AcquireUniqueFileResource(filename);
6048 if (unique_file != -1)
6049 file=fdopen(unique_file,"wb");
6050 if ((unique_file == -1) || (file == (FILE *) NULL))
6052 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
6053 "UnableToCreateTemporaryFile","`%s'",wand->name);
6054 return((char *) NULL);
6056 (void) IdentifyImage(wand->images,file,MagickTrue,wand->exception);
6057 (void) fclose(file);
6058 description=FileToString(filename,~0UL,wand->exception);
6059 (void) RelinquishUniqueFileResource(filename);
6060 return(description);
6064 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6068 % M a g i c k I d e n t i f y I m a g e T y p e %
6072 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6074 % MagickIdentifyImageType() gets the potential image type:
6076 % Bilevel Grayscale GrayscaleMatte
6077 % Palette PaletteMatte TrueColor
6078 % TrueColorMatte ColorSeparation ColorSeparationMatte
6080 % To ensure the image type matches its potential, use MagickSetImageType():
6082 % (void) MagickSetImageType(wand,MagickIdentifyImageType(wand));
6084 % The format of the MagickIdentifyImageType method is:
6086 % ImageType MagickIdentifyImageType(MagickWand *wand)
6088 % A description of each parameter follows:
6090 % o wand: the magick wand.
6093 WandExport ImageType MagickIdentifyImageType(MagickWand *wand)
6095 assert(wand != (MagickWand *) NULL);
6096 assert(wand->signature == MagickWandSignature);
6097 if (wand->debug != MagickFalse)
6098 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
6099 if (wand->images == (Image *) NULL)
6101 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
6102 "ContainsNoImages","`%s'",wand->name);
6103 return(UndefinedType);
6105 return(IdentifyImageType(wand->images,wand->exception));
6109 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6113 % M a g i c k I m p l o d e I m a g e %
6117 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6119 % MagickImplodeImage() creates a new image that is a copy of an existing
6120 % one with the image pixels "implode" by the specified percentage. It
6121 % allocates the memory necessary for the new Image structure and returns a
6122 % pointer to the new image.
6124 % The format of the MagickImplodeImage method is:
6126 % MagickBooleanType MagickImplodeImage(MagickWand *wand,
6127 % const double radius,const PixelInterpolateMethod method)
6129 % A description of each parameter follows:
6131 % o wand: the magick wand.
6133 % o amount: Define the extent of the implosion.
6135 % o method: the pixel interpolation method.
6138 WandExport MagickBooleanType MagickImplodeImage(MagickWand *wand,
6139 const double amount,const PixelInterpolateMethod method)
6144 assert(wand != (MagickWand *) NULL);
6145 assert(wand->signature == MagickWandSignature);
6146 if (wand->debug != MagickFalse)
6147 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
6148 if (wand->images == (Image *) NULL)
6149 ThrowWandException(WandError,"ContainsNoImages",wand->name);
6150 implode_image=ImplodeImage(wand->images,amount,method,wand->exception);
6151 if (implode_image == (Image *) NULL)
6152 return(MagickFalse);
6153 ReplaceImageInList(&wand->images,implode_image);
6158 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6162 % M a g i c k I m p o r t I m a g e P i x e l s %
6166 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6168 % MagickImportImagePixels() accepts pixel datand stores it in the image at the
6169 % location you specify. The method returns MagickFalse on success otherwise
6170 % MagickTrue if an error is encountered. The pixel data can be either char,
6171 % short int, int, ssize_t, float, or double in the order specified by map.
6173 % Suppose your want to upload the first scanline of a 640x480 image from
6174 % character data in red-green-blue order:
6176 % MagickImportImagePixels(wand,0,0,640,1,"RGB",CharPixel,pixels);
6178 % The format of the MagickImportImagePixels method is:
6180 % MagickBooleanType MagickImportImagePixels(MagickWand *wand,
6181 % const ssize_t x,const ssize_t y,const size_t columns,
6182 % const size_t rows,const char *map,const StorageType storage,
6183 % const void *pixels)
6185 % A description of each parameter follows:
6187 % o wand: the magick wand.
6189 % o x, y, columns, rows: These values define the perimeter of a region
6190 % of pixels you want to define.
6192 % o map: This string reflects the expected ordering of the pixel array.
6193 % It can be any combination or order of R = red, G = green, B = blue,
6194 % A = alpha (0 is transparent), O = alpha (0 is opaque), C = cyan,
6195 % Y = yellow, M = magenta, K = black, I = intensity (for grayscale),
6198 % o storage: Define the data type of the pixels. Float and double types are
6199 % expected to be normalized [0..1] otherwise [0..QuantumRange]. Choose from
6200 % these types: CharPixel, ShortPixel, IntegerPixel, LongPixel, FloatPixel,
6203 % o pixels: This array of values contain the pixel components as defined by
6204 % map and type. You must preallocate this array where the expected
6205 % length varies depending on the values of width, height, map, and type.
6208 WandExport MagickBooleanType MagickImportImagePixels(MagickWand *wand,
6209 const ssize_t x,const ssize_t y,const size_t columns,const size_t rows,
6210 const char *map,const StorageType storage,const void *pixels)
6215 assert(wand != (MagickWand *) NULL);
6216 assert(wand->signature == MagickWandSignature);
6217 if (wand->debug != MagickFalse)
6218 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
6219 if (wand->images == (Image *) NULL)
6220 ThrowWandException(WandError,"ContainsNoImages",wand->name);
6221 status=ImportImagePixels(wand->images,x,y,columns,rows,map,storage,pixels,
6227 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6231 % M a g i c k I n t e r p o l a t i v e R e s i z e I m a g e %
6235 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6237 % MagickInterpolativeResizeImage() resize image using a interpolative
6240 % MagickBooleanType MagickInterpolativeResizeImage(MagickWand *wand,
6241 % const size_t columns,const size_t rows,
6242 % const PixelInterpolateMethod method)
6244 % A description of each parameter follows:
6246 % o wand: the magick wand.
6248 % o columns: the number of columns in the scaled image.
6250 % o rows: the number of rows in the scaled image.
6252 % o interpolate: the pixel interpolation method.
6255 WandExport MagickBooleanType MagickInterpolativeResizeImage(MagickWand *wand,
6256 const size_t columns,const size_t rows,const PixelInterpolateMethod method)
6261 assert(wand != (MagickWand *) NULL);
6262 assert(wand->signature == MagickWandSignature);
6263 if (wand->debug != MagickFalse)
6264 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
6265 if (wand->images == (Image *) NULL)
6266 ThrowWandException(WandError,"ContainsNoImages",wand->name);
6267 resize_image=InterpolativeResizeImage(wand->images,columns,rows,method,
6269 if (resize_image == (Image *) NULL)
6270 return(MagickFalse);
6271 ReplaceImageInList(&wand->images,resize_image);
6276 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6280 % M a g i c k I n v e r s e F o u r i e r T r a n s f o r m I m a g e %
6284 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6286 % MagickInverseFourierTransformImage() implements the inverse discrete
6287 % Fourier transform (DFT) of the image either as a magnitude / phase or real /
6288 % imaginary image pair.
6290 % The format of the MagickInverseFourierTransformImage method is:
6292 % MagickBooleanType MagickInverseFourierTransformImage(
6293 % MagickWand *magnitude_wand,MagickWand *phase_wand,
6294 % const MagickBooleanType magnitude)
6296 % A description of each parameter follows:
6298 % o magnitude_wand: the magnitude or real wand.
6300 % o phase_wand: the phase or imaginary wand.
6302 % o magnitude: if true, return as magnitude / phase pair otherwise a real /
6303 % imaginary image pair.
6306 WandExport MagickBooleanType MagickInverseFourierTransformImage(
6307 MagickWand *magnitude_wand,MagickWand *phase_wand,
6308 const MagickBooleanType magnitude)
6316 assert(magnitude_wand != (MagickWand *) NULL);
6317 assert(magnitude_wand->signature == MagickWandSignature);
6318 if (magnitude_wand->debug != MagickFalse)
6319 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",
6320 magnitude_wand->name);
6321 wand=magnitude_wand;
6322 if (magnitude_wand->images == (Image *) NULL)
6323 ThrowWandException(WandError,"ContainsNoImages",
6324 magnitude_wand->name);
6325 assert(phase_wand != (MagickWand *) NULL);
6326 assert(phase_wand->signature == MagickWandSignature);
6327 inverse_image=InverseFourierTransformImage(magnitude_wand->images,
6328 phase_wand->images,magnitude,wand->exception);
6329 if (inverse_image == (Image *) NULL)
6330 return(MagickFalse);
6331 ReplaceImageInList(&wand->images,inverse_image);
6336 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6340 % M a g i c k L a b e l I m a g e %
6344 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6346 % MagickLabelImage() adds a label to your image.
6348 % The format of the MagickLabelImage method is:
6350 % MagickBooleanType MagickLabelImage(MagickWand *wand,const char *label)
6352 % A description of each parameter follows:
6354 % o wand: the magick wand.
6356 % o label: the image label.
6359 WandExport MagickBooleanType MagickLabelImage(MagickWand *wand,
6365 assert(wand != (MagickWand *) NULL);
6366 assert(wand->signature == MagickWandSignature);
6367 if (wand->debug != MagickFalse)
6368 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
6369 if (wand->images == (Image *) NULL)
6370 ThrowWandException(WandError,"ContainsNoImages",wand->name);
6371 status=SetImageProperty(wand->images,"label",label,wand->exception);
6376 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6380 % M a g i c k L e v e l I m a g e %
6384 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6386 % MagickLevelImage() adjusts the levels of an image by scaling the colors
6387 % falling between specified white and black points to the full available
6388 % quantum range. The parameters provided represent the black, mid, and white
6389 % points. The black point specifies the darkest color in the image. Colors
6390 % darker than the black point are set to zero. Mid point specifies a gamma
6391 % correction to apply to the image. White point specifies the lightest color
6392 % in the image. Colors brighter than the white point are set to the maximum
6395 % The format of the MagickLevelImage method is:
6397 % MagickBooleanType MagickLevelImage(MagickWand *wand,
6398 % const double black_point,const double gamma,const double white_point)
6399 % MagickBooleanType MagickLevelImage(MagickWand *wand,
6400 % const ChannelType channel,const double black_point,const double gamma,
6401 % const double white_point)
6403 % A description of each parameter follows:
6405 % o wand: the magick wand.
6407 % o channel: Identify which channel to level: RedPixelChannel,
6408 % GreenPixelChannel, etc.
6410 % o black_point: the black point.
6412 % o gamma: the gamma.
6414 % o white_point: the white point.
6417 WandExport MagickBooleanType MagickLevelImage(MagickWand *wand,
6418 const double black_point,const double gamma,const double white_point)
6423 assert(wand != (MagickWand *) NULL);
6424 assert(wand->signature == MagickWandSignature);
6425 if (wand->debug != MagickFalse)
6426 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
6427 if (wand->images == (Image *) NULL)
6428 ThrowWandException(WandError,"ContainsNoImages",wand->name);
6429 status=LevelImage(wand->images,black_point,white_point,gamma,
6435 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6439 % M a g i c k L i n e a r S t r e t c h I m a g e %
6443 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6445 % MagickLinearStretchImage() stretches with saturation the image intensity.
6447 % You can also reduce the influence of a particular channel with a gamma
6450 % The format of the MagickLinearStretchImage method is:
6452 % MagickBooleanType MagickLinearStretchImage(MagickWand *wand,
6453 % const double black_point,const double white_point)
6455 % A description of each parameter follows:
6457 % o wand: the magick wand.
6459 % o black_point: the black point.
6461 % o white_point: the white point.
6464 WandExport MagickBooleanType MagickLinearStretchImage(MagickWand *wand,
6465 const double black_point,const double white_point)
6470 assert(wand != (MagickWand *) NULL);
6471 assert(wand->signature == MagickWandSignature);
6472 if (wand->debug != MagickFalse)
6473 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
6474 if (wand->images == (Image *) NULL)
6475 ThrowWandException(WandError,"ContainsNoImages",wand->name);
6476 status=LinearStretchImage(wand->images,black_point,white_point,
6482 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6486 % M a g i c k L i q u i d R e s c a l e I m a g e %
6490 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6492 % MagickLiquidRescaleImage() rescales image with seam carving.
6494 % MagickBooleanType MagickLiquidRescaleImage(MagickWand *wand,
6495 % const size_t columns,const size_t rows,
6496 % const double delta_x,const double rigidity)
6498 % A description of each parameter follows:
6500 % o wand: the magick wand.
6502 % o columns: the number of columns in the scaled image.
6504 % o rows: the number of rows in the scaled image.
6506 % o delta_x: maximum seam transversal step (0 means straight seams).
6508 % o rigidity: introduce a bias for non-straight seams (typically 0).
6511 WandExport MagickBooleanType MagickLiquidRescaleImage(MagickWand *wand,
6512 const size_t columns,const size_t rows,const double delta_x,
6513 const double rigidity)
6518 assert(wand != (MagickWand *) NULL);
6519 assert(wand->signature == MagickWandSignature);
6520 if (wand->debug != MagickFalse)
6521 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
6522 if (wand->images == (Image *) NULL)
6523 ThrowWandException(WandError,"ContainsNoImages",wand->name);
6524 rescale_image=LiquidRescaleImage(wand->images,columns,rows,delta_x,
6525 rigidity,wand->exception);
6526 if (rescale_image == (Image *) NULL)
6527 return(MagickFalse);
6528 ReplaceImageInList(&wand->images,rescale_image);
6533 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6537 % M a g i c k L o c a l C o n t r a s t I m a g e %
6541 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6543 % MagickLocalContrastImage() attempts to increase the appearance of
6544 % large-scale light-dark transitions. Local contrast enhancement works
6545 % similarly to sharpening with an unsharp mask, however the mask is instead
6546 % created using an image with a greater blur distance.
6548 % MagickBooleanType MagickLocalContrastImage(MagickWand *wand,
6549 % const double radius,const double strength)
6551 % A description of each parameter follows:
6553 % o image: the image.
6555 % o radius: the radius of the Gaussian, in pixels, not counting
6558 % o strength: the strength of the blur mask in percentage.
6561 WandExport MagickBooleanType MagickLocalContrastImage(MagickWand *wand,
6562 const double radius, const double strength)
6567 assert(wand != (MagickWand *)NULL);
6568 assert(wand->signature == MagickWandSignature);
6569 if (wand->debug != MagickFalse)
6570 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s", wand->name);
6571 if (wand->images == (Image *)NULL)
6572 ThrowWandException(WandError,"ContainsNoImages",wand->name);
6573 contrast_image=LocalContrastImage(wand->images,radius,strength,
6575 if (contrast_image == (Image *)NULL)
6576 return(MagickFalse);
6577 ReplaceImageInList(&wand->images,contrast_image);
6582 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6586 % M a g i c k M a g n i f y I m a g e %
6590 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6592 % MagickMagnifyImage() is a convenience method that scales an image
6593 % proportionally to twice its original size.
6595 % The format of the MagickMagnifyImage method is:
6597 % MagickBooleanType MagickMagnifyImage(MagickWand *wand)
6599 % A description of each parameter follows:
6601 % o wand: the magick wand.
6604 WandExport MagickBooleanType MagickMagnifyImage(MagickWand *wand)
6609 assert(wand != (MagickWand *) NULL);
6610 assert(wand->signature == MagickWandSignature);
6611 if (wand->debug != MagickFalse)
6612 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
6613 if (wand->images == (Image *) NULL)
6614 ThrowWandException(WandError,"ContainsNoImages",wand->name);
6615 magnify_image=MagnifyImage(wand->images,wand->exception);
6616 if (magnify_image == (Image *) NULL)
6617 return(MagickFalse);
6618 ReplaceImageInList(&wand->images,magnify_image);
6623 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6627 % M a g i c k M e r g e I m a g e L a y e r s %
6631 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6633 % MagickMergeImageLayers() composes all the image layers from the current
6634 % given image onward to produce a single image of the merged layers.
6636 % The inital canvas's size depends on the given LayerMethod, and is
6637 % initialized using the first images background color. The images
6638 % are then compositied onto that image in sequence using the given
6639 % composition that has been assigned to each individual image.
6641 % The format of the MagickMergeImageLayers method is:
6643 % MagickWand *MagickMergeImageLayers(MagickWand *wand,
6644 % const LayerMethod method)
6646 % A description of each parameter follows:
6648 % o wand: the magick wand.
6650 % o method: the method of selecting the size of the initial canvas.
6652 % MergeLayer: Merge all layers onto a canvas just large enough
6653 % to hold all the actual images. The virtual canvas of the
6654 % first image is preserved but otherwise ignored.
6656 % FlattenLayer: Use the virtual canvas size of first image.
6657 % Images which fall outside this canvas is clipped.
6658 % This can be used to 'fill out' a given virtual canvas.
6660 % MosaicLayer: Start with the virtual canvas of the first image,
6661 % enlarging left and right edges to contain all images.
6662 % Images with negative offsets will be clipped.
6665 WandExport MagickWand *MagickMergeImageLayers(MagickWand *wand,
6666 const LayerMethod method)
6671 assert(wand != (MagickWand *) NULL);
6672 assert(wand->signature == MagickWandSignature);
6673 if (wand->debug != MagickFalse)
6674 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
6675 if (wand->images == (Image *) NULL)
6676 return((MagickWand *) NULL);
6677 mosaic_image=MergeImageLayers(wand->images,method,wand->exception);
6678 if (mosaic_image == (Image *) NULL)
6679 return((MagickWand *) NULL);
6680 return(CloneMagickWandFromImages(wand,mosaic_image));
6684 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6688 % M a g i c k M i n i f y I m a g e %
6692 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6694 % MagickMinifyImage() is a convenience method that scales an image
6695 % proportionally to one-half its original size
6697 % The format of the MagickMinifyImage method is:
6699 % MagickBooleanType MagickMinifyImage(MagickWand *wand)
6701 % A description of each parameter follows:
6703 % o wand: the magick wand.
6706 WandExport MagickBooleanType MagickMinifyImage(MagickWand *wand)
6711 assert(wand != (MagickWand *) NULL);
6712 assert(wand->signature == MagickWandSignature);
6713 if (wand->debug != MagickFalse)
6714 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
6715 if (wand->images == (Image *) NULL)
6716 ThrowWandException(WandError,"ContainsNoImages",wand->name);
6717 minify_image=MinifyImage(wand->images,wand->exception);
6718 if (minify_image == (Image *) NULL)
6719 return(MagickFalse);
6720 ReplaceImageInList(&wand->images,minify_image);
6725 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6729 % M a g i c k M o d u l a t e I m a g e %
6733 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6735 % MagickModulateImage() lets you control the brightness, saturation, and hue
6736 % of an image. Hue is the percentage of absolute rotation from the current
6737 % position. For example 50 results in a counter-clockwise rotation of 90
6738 % degrees, 150 results in a clockwise rotation of 90 degrees, with 0 and 200
6739 % both resulting in a rotation of 180 degrees.
6741 % To increase the color brightness by 20% and decrease the color saturation by
6742 % 10% and leave the hue unchanged, use: 120,90,100.
6744 % The format of the MagickModulateImage method is:
6746 % MagickBooleanType MagickModulateImage(MagickWand *wand,
6747 % const double brightness,const double saturation,const double hue)
6749 % A description of each parameter follows:
6751 % o wand: the magick wand.
6753 % o brightness: the percent change in brighness.
6755 % o saturation: the percent change in saturation.
6757 % o hue: the percent change in hue.
6760 WandExport MagickBooleanType MagickModulateImage(MagickWand *wand,
6761 const double brightness,const double saturation,const double hue)
6764 modulate[MagickPathExtent];
6769 assert(wand != (MagickWand *) NULL);
6770 assert(wand->signature == MagickWandSignature);
6771 if (wand->debug != MagickFalse)
6772 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
6773 if (wand->images == (Image *) NULL)
6774 ThrowWandException(WandError,"ContainsNoImages",wand->name);
6775 (void) FormatLocaleString(modulate,MagickPathExtent,"%g,%g,%g",
6776 brightness,saturation,hue);
6777 status=ModulateImage(wand->images,modulate,wand->exception);
6782 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6786 % M a g i c k M o n t a g e I m a g e %
6790 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6792 % MagickMontageImage() creates a composite image by combining several
6793 % separate images. The images are tiled on the composite image with the name
6794 % of the image optionally appearing just below the individual tile.
6796 % The format of the MagickMontageImage method is:
6798 % MagickWand *MagickMontageImage(MagickWand *wand,
6799 % const DrawingWand drawing_wand,const char *tile_geometry,
6800 % const char *thumbnail_geometry,const MontageMode mode,
6801 % const char *frame)
6803 % A description of each parameter follows:
6805 % o wand: the magick wand.
6807 % o drawing_wand: the drawing wand. The font name, size, and color are
6808 % obtained from this wand.
6810 % o tile_geometry: the number of tiles per row and page (e.g. 6x4+0+0).
6812 % o thumbnail_geometry: Preferred image size and border size of each
6813 % thumbnail (e.g. 120x120+4+3>).
6815 % o mode: Thumbnail framing mode: Frame, Unframe, or Concatenate.
6817 % o frame: Surround the image with an ornamental border (e.g. 15x15+3+3).
6818 % The frame color is that of the thumbnail's matte color.
6821 WandExport MagickWand *MagickMontageImage(MagickWand *wand,
6822 const DrawingWand *drawing_wand,const char *tile_geometry,
6823 const char *thumbnail_geometry,const MontageMode mode,const char *frame)
6837 assert(wand != (MagickWand *) NULL);
6838 assert(wand->signature == MagickWandSignature);
6839 if (wand->debug != MagickFalse)
6840 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
6841 if (wand->images == (Image *) NULL)
6842 return((MagickWand *) NULL);
6843 montage_info=CloneMontageInfo(wand->image_info,(MontageInfo *) NULL);
6848 (void) CloneString(&montage_info->frame,"15x15+3+3");
6849 montage_info->shadow=MagickTrue;
6854 montage_info->frame=(char *) NULL;
6855 montage_info->shadow=MagickFalse;
6856 montage_info->border_width=0;
6859 case ConcatenateMode:
6861 montage_info->frame=(char *) NULL;
6862 montage_info->shadow=MagickFalse;
6863 (void) CloneString(&montage_info->geometry,"+0+0");
6864 montage_info->border_width=0;
6870 font=DrawGetFont(drawing_wand);
6871 if (font != (char *) NULL)
6872 (void) CloneString(&montage_info->font,font);
6873 if (frame != (char *) NULL)
6874 (void) CloneString(&montage_info->frame,frame);
6875 montage_info->pointsize=DrawGetFontSize(drawing_wand);
6876 pixel_wand=NewPixelWand();
6877 DrawGetFillColor(drawing_wand,pixel_wand);
6878 PixelGetQuantumPacket(pixel_wand,&montage_info->fill);
6879 DrawGetStrokeColor(drawing_wand,pixel_wand);
6880 PixelGetQuantumPacket(pixel_wand,&montage_info->stroke);
6881 pixel_wand=DestroyPixelWand(pixel_wand);
6882 if (thumbnail_geometry != (char *) NULL)
6883 (void) CloneString(&montage_info->geometry,thumbnail_geometry);
6884 if (tile_geometry != (char *) NULL)
6885 (void) CloneString(&montage_info->tile,tile_geometry);
6886 montage_image=MontageImageList(wand->image_info,montage_info,wand->images,
6888 montage_info=DestroyMontageInfo(montage_info);
6889 if (montage_image == (Image *) NULL)
6890 return((MagickWand *) NULL);
6891 return(CloneMagickWandFromImages(wand,montage_image));
6895 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6899 % M a g i c k M o r p h I m a g e s %
6903 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6905 % MagickMorphImages() method morphs a set of images. Both the image pixels
6906 % and size are linearly interpolated to give the appearance of a
6907 % meta-morphosis from one image to the next.
6909 % The format of the MagickMorphImages method is:
6911 % MagickWand *MagickMorphImages(MagickWand *wand,
6912 % const size_t number_frames)
6914 % A description of each parameter follows:
6916 % o wand: the magick wand.
6918 % o number_frames: the number of in-between images to generate.
6921 WandExport MagickWand *MagickMorphImages(MagickWand *wand,
6922 const size_t number_frames)
6927 assert(wand != (MagickWand *) NULL);
6928 assert(wand->signature == MagickWandSignature);
6929 if (wand->debug != MagickFalse)
6930 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
6931 if (wand->images == (Image *) NULL)
6932 return((MagickWand *) NULL);
6933 morph_image=MorphImages(wand->images,number_frames,wand->exception);
6934 if (morph_image == (Image *) NULL)
6935 return((MagickWand *) NULL);
6936 return(CloneMagickWandFromImages(wand,morph_image));
6940 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6944 % M a g i c k M o r p h o l o g y I m a g e %
6948 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6950 % MagickMorphologyImage() applies a user supplied kernel to the image
6951 % according to the given mophology method.
6953 % The format of the MagickMorphologyImage method is:
6955 % MagickBooleanType MagickMorphologyImage(MagickWand *wand,
6956 % MorphologyMethod method,const ssize_t iterations,KernelInfo *kernel)
6958 % A description of each parameter follows:
6960 % o wand: the magick wand.
6962 % o method: the morphology method to be applied.
6964 % o iterations: apply the operation this many times (or no change).
6965 % A value of -1 means loop until no change found. How this is applied
6966 % may depend on the morphology method. Typically this is a value of 1.
6968 % o kernel: An array of doubles representing the morphology kernel.
6971 WandExport MagickBooleanType MagickMorphologyImage(MagickWand *wand,
6972 MorphologyMethod method,const ssize_t iterations,KernelInfo *kernel)
6977 assert(wand != (MagickWand *) NULL);
6978 assert(wand->signature == MagickWandSignature);
6979 if (wand->debug != MagickFalse)
6980 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
6981 if (kernel == (const KernelInfo *) NULL)
6982 return(MagickFalse);
6983 if (wand->images == (Image *) NULL)
6984 ThrowWandException(WandError,"ContainsNoImages",wand->name);
6985 morphology_image=MorphologyImage(wand->images,method,iterations,kernel,
6987 if (morphology_image == (Image *) NULL)
6988 return(MagickFalse);
6989 ReplaceImageInList(&wand->images,morphology_image);
6994 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6998 % M a g i c k M o t i o n B l u r I m a g e %
7002 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7004 % MagickMotionBlurImage() simulates motion blur. We convolve the image with a
7005 % Gaussian operator of the given radius and standard deviation (sigma).
7006 % For reasonable results, radius should be larger than sigma. Use a
7007 % radius of 0 and MotionBlurImage() selects a suitable radius for you.
7008 % Angle gives the angle of the blurring motion.
7010 % The format of the MagickMotionBlurImage method is:
7012 % MagickBooleanType MagickMotionBlurImage(MagickWand *wand,
7013 % const double radius,const double sigma,const double angle)
7015 % A description of each parameter follows:
7017 % o wand: the magick wand.
7019 % o radius: the radius of the Gaussian, in pixels, not counting
7022 % o sigma: the standard deviation of the Gaussian, in pixels.
7024 % o angle: Apply the effect along this angle.
7027 WandExport MagickBooleanType MagickMotionBlurImage(MagickWand *wand,
7028 const double radius,const double sigma,const double angle)
7033 assert(wand != (MagickWand *) NULL);
7034 assert(wand->signature == MagickWandSignature);
7035 if (wand->debug != MagickFalse)
7036 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
7037 if (wand->images == (Image *) NULL)
7038 ThrowWandException(WandError,"ContainsNoImages",wand->name);
7039 blur_image=MotionBlurImage(wand->images,radius,sigma,angle,wand->exception);
7040 if (blur_image == (Image *) NULL)
7041 return(MagickFalse);
7042 ReplaceImageInList(&wand->images,blur_image);
7047 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7051 % M a g i c k N e g a t e I m a g e %
7055 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7057 % MagickNegateImage() negates the colors in the reference image. The
7058 % Grayscale option means that only grayscale values within the image are
7061 % You can also reduce the influence of a particular channel with a gamma
7064 % The format of the MagickNegateImage method is:
7066 % MagickBooleanType MagickNegateImage(MagickWand *wand,
7067 % const MagickBooleanType gray)
7069 % A description of each parameter follows:
7071 % o wand: the magick wand.
7073 % o gray: If MagickTrue, only negate grayscale pixels within the image.
7076 WandExport MagickBooleanType MagickNegateImage(MagickWand *wand,
7077 const MagickBooleanType gray)
7082 assert(wand != (MagickWand *) NULL);
7083 assert(wand->signature == MagickWandSignature);
7084 if (wand->debug != MagickFalse)
7085 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
7086 if (wand->images == (Image *) NULL)
7087 ThrowWandException(WandError,"ContainsNoImages",wand->name);
7088 status=NegateImage(wand->images,gray,wand->exception);
7093 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7097 % M a g i c k N e w I m a g e %
7101 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7103 % MagickNewImage() adds a blank image canvas of the specified size and
7104 % background color to the wand.
7106 % The format of the MagickNewImage method is:
7108 % MagickBooleanType MagickNewImage(MagickWand *wand,
7109 % const size_t columns,const size_t rows,
7110 % const PixelWand *background)
7112 % A description of each parameter follows:
7114 % o wand: the magick wand.
7116 % o width: the image width.
7118 % o height: the image height.
7120 % o background: the image color.
7123 WandExport MagickBooleanType MagickNewImage(MagickWand *wand,const size_t width,
7124 const size_t height,const PixelWand *background)
7132 assert(wand != (MagickWand *) NULL);
7133 assert(wand->signature == MagickWandSignature);
7134 if (wand->debug != MagickFalse)
7135 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
7136 PixelGetMagickColor(background,&pixel);
7137 images=NewMagickImage(wand->image_info,width,height,&pixel,wand->exception);
7138 if (images == (Image *) NULL)
7139 return(MagickFalse);
7140 return(InsertImageInWand(wand,images));
7144 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7148 % M a g i c k N e x t I m a g e %
7152 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7154 % MagickNextImage() sets the next image in the wand as the current image.
7156 % It is typically used after MagickResetIterator(), after which its first use
7157 % will set the first image as the current image (unless the wand is empty).
7159 % It will return MagickFalse when no more images are left to be returned
7160 % which happens when the wand is empty, or the current image is the last
7163 % When the above condition (end of image list) is reached, the iterator is
7164 % automaticall set so that you can start using MagickPreviousImage() to
7165 % again iterate over the images in the reverse direction, starting with the
7166 % last image (again). You can jump to this condition immeditally using
7167 % MagickSetLastIterator().
7169 % The format of the MagickNextImage method is:
7171 % MagickBooleanType MagickNextImage(MagickWand *wand)
7173 % A description of each parameter follows:
7175 % o wand: the magick wand.
7178 WandExport MagickBooleanType MagickNextImage(MagickWand *wand)
7180 assert(wand != (MagickWand *) NULL);
7181 assert(wand->signature == MagickWandSignature);
7182 if (wand->debug != MagickFalse)
7183 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
7184 if (wand->images == (Image *) NULL)
7185 ThrowWandException(WandError,"ContainsNoImages",wand->name);
7186 wand->insert_before=MagickFalse; /* Inserts is now appended */
7187 if (wand->image_pending != MagickFalse)
7189 wand->image_pending=MagickFalse;
7192 if (GetNextImageInList(wand->images) == (Image *) NULL)
7194 wand->image_pending=MagickTrue; /* No image, PreviousImage re-gets */
7195 return(MagickFalse);
7197 wand->images=GetNextImageInList(wand->images);
7202 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7206 % M a g i c k N o r m a l i z e I m a g e %
7210 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7212 % MagickNormalizeImage() enhances the contrast of a color image by adjusting
7213 % the pixels color to span the entire range of colors available
7215 % You can also reduce the influence of a particular channel with a gamma
7218 % The format of the MagickNormalizeImage method is:
7220 % MagickBooleanType MagickNormalizeImage(MagickWand *wand)
7222 % A description of each parameter follows:
7224 % o wand: the magick wand.
7227 WandExport MagickBooleanType MagickNormalizeImage(MagickWand *wand)
7232 assert(wand != (MagickWand *) NULL);
7233 assert(wand->signature == MagickWandSignature);
7234 if (wand->debug != MagickFalse)
7235 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
7236 if (wand->images == (Image *) NULL)
7237 ThrowWandException(WandError,"ContainsNoImages",wand->name);
7238 status=NormalizeImage(wand->images,wand->exception);
7243 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7247 % M a g i c k O i l P a i n t I m a g e %
7251 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7253 % MagickOilPaintImage() applies a special effect filter that simulates an oil
7254 % painting. Each pixel is replaced by the most frequent color occurring
7255 % in a circular region defined by radius.
7257 % The format of the MagickOilPaintImage method is:
7259 % MagickBooleanType MagickOilPaintImage(MagickWand *wand,
7260 % const double radius,const double sigma)
7262 % A description of each parameter follows:
7264 % o wand: the magick wand.
7266 % o radius: the radius of the circular neighborhood.
7268 % o sigma: the standard deviation of the Gaussian, in pixels.
7271 WandExport MagickBooleanType MagickOilPaintImage(MagickWand *wand,
7272 const double radius,const double sigma)
7277 assert(wand != (MagickWand *) NULL);
7278 assert(wand->signature == MagickWandSignature);
7279 if (wand->debug != MagickFalse)
7280 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
7281 if (wand->images == (Image *) NULL)
7282 ThrowWandException(WandError,"ContainsNoImages",wand->name);
7283 paint_image=OilPaintImage(wand->images,radius,sigma,wand->exception);
7284 if (paint_image == (Image *) NULL)
7285 return(MagickFalse);
7286 ReplaceImageInList(&wand->images,paint_image);
7291 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7295 % M a g i c k O p a q u e P a i n t I m a g e %
7299 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7301 % MagickOpaquePaintImage() changes any pixel that matches color with the color
7304 % The format of the MagickOpaquePaintImage method is:
7306 % MagickBooleanType MagickOpaquePaintImage(MagickWand *wand,
7307 % const PixelWand *target,const PixelWand *fill,const double fuzz,
7308 % const MagickBooleanType invert)
7310 % A description of each parameter follows:
7312 % o wand: the magick wand.
7314 % o target: Change this target color to the fill color within the image.
7316 % o fill: the fill pixel wand.
7318 % o fuzz: By default target must match a particular pixel color
7319 % exactly. However, in many cases two colors may differ by a small amount.
7320 % The fuzz member of image defines how much tolerance is acceptable to
7321 % consider two colors as the same. For example, set fuzz to 10 and the
7322 % color red at intensities of 100 and 102 respectively are now interpreted
7323 % as the same color for the purposes of the floodfill.
7325 % o invert: paint any pixel that does not match the target color.
7328 WandExport MagickBooleanType MagickOpaquePaintImage(MagickWand *wand,
7329 const PixelWand *target,const PixelWand *fill,const double fuzz,
7330 const MagickBooleanType invert)
7339 assert(wand != (MagickWand *) NULL);
7340 assert(wand->signature == MagickWandSignature);
7341 if (wand->debug != MagickFalse)
7342 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
7343 if (wand->images == (Image *) NULL)
7344 ThrowWandException(WandError,"ContainsNoImages",wand->name);
7345 PixelGetMagickColor(target,&target_pixel);
7346 PixelGetMagickColor(fill,&fill_pixel);
7347 wand->images->fuzz=fuzz;
7348 status=OpaquePaintImage(wand->images,&target_pixel,&fill_pixel,invert,
7354 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7358 % M a g i c k O p t i m i z e I m a g e L a y e r s %
7362 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7364 % MagickOptimizeImageLayers() compares each image the GIF disposed forms of the
7365 % previous image in the sequence. From this it attempts to select the
7366 % smallest cropped image to replace each frame, while preserving the results
7369 % The format of the MagickOptimizeImageLayers method is:
7371 % MagickWand *MagickOptimizeImageLayers(MagickWand *wand)
7373 % A description of each parameter follows:
7375 % o wand: the magick wand.
7378 WandExport MagickWand *MagickOptimizeImageLayers(MagickWand *wand)
7383 assert(wand != (MagickWand *) NULL);
7384 assert(wand->signature == MagickWandSignature);
7385 if (wand->debug != MagickFalse)
7386 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
7387 if (wand->images == (Image *) NULL)
7388 return((MagickWand *) NULL);
7389 optimize_image=OptimizeImageLayers(wand->images,wand->exception);
7390 if (optimize_image == (Image *) NULL)
7391 return((MagickWand *) NULL);
7392 return(CloneMagickWandFromImages(wand,optimize_image));
7396 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7400 % M a g i c k O p t i m i z e I m a g e T r a n s p a r e n c y %
7404 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7406 % MagickOptimizeImageTransparency() takes a frame optimized GIF animation, and
7407 % compares the overlayed pixels against the disposal image resulting from all
7408 % the previous frames in the animation. Any pixel that does not change the
7409 % disposal image (and thus does not effect the outcome of an overlay) is made
7412 % WARNING: This modifies the current images directly, rather than generate
7413 % a new image sequence.
7414 % The format of the MagickOptimizeImageTransparency method is:
7416 % MagickBooleanType MagickOptimizeImageTransparency(MagickWand *wand)
7418 % A description of each parameter follows:
7420 % o wand: the magick wand.
7423 WandExport MagickBooleanType MagickOptimizeImageTransparency(MagickWand *wand)
7425 assert(wand != (MagickWand *) NULL);
7426 assert(wand->signature == MagickWandSignature);
7427 if (wand->debug != MagickFalse)
7428 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
7429 if (wand->images == (Image *) NULL)
7430 return(MagickFalse);
7431 OptimizeImageTransparency(wand->images,wand->exception);
7436 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7440 % M a g i c k O r d e r e d P o s t e r i z e I m a g e %
7444 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7446 % MagickOrderedPosterizeImage() performs an ordered dither based on a number
7447 % of pre-defined dithering threshold maps, but over multiple intensity levels,
7448 % which can be different for different channels, according to the input
7451 % The format of the MagickOrderedPosterizeImage method is:
7453 % MagickBooleanType MagickOrderedPosterizeImage(MagickWand *wand,
7454 % const char *threshold_map)
7456 % A description of each parameter follows:
7458 % o image: the image.
7460 % o threshold_map: A string containing the name of the threshold dither
7461 % map to use, followed by zero or more numbers representing the number of
7462 % color levels tho dither between.
7464 % Any level number less than 2 is equivalent to 2, and means only binary
7465 % dithering will be applied to each color channel.
7467 % No numbers also means a 2 level (bitmap) dither will be applied to all
7468 % channels, while a single number is the number of levels applied to each
7469 % channel in sequence. More numbers will be applied in turn to each of
7470 % the color channels.
7472 % For example: "o3x3,6" generates a 6 level posterization of the image
7473 % with a ordered 3x3 diffused pixel dither being applied between each
7474 % level. While checker,8,8,4 will produce a 332 colormaped image with
7475 % only a single checkerboard hash pattern (50% grey) between each color
7476 % level, to basically double the number of color levels with a bare
7477 % minimim of dithering.
7480 WandExport MagickBooleanType MagickOrderedPosterizeImage(MagickWand *wand,
7481 const char *threshold_map)
7486 assert(wand != (MagickWand *) NULL);
7487 assert(wand->signature == MagickWandSignature);
7488 if (wand->debug != MagickFalse)
7489 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
7490 if (wand->images == (Image *) NULL)
7491 ThrowWandException(WandError,"ContainsNoImages",wand->name);
7492 status=OrderedPosterizeImage(wand->images,threshold_map,wand->exception);
7497 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7501 % M a g i c k P i n g I m a g e %
7505 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7507 % MagickPingImage() is the same as MagickReadImage() except the only valid
7508 % information returned is the image width, height, size, and format. It
7509 % is designed to efficiently obtain this information from a file without
7510 % reading the entire image sequence into memory.
7512 % The format of the MagickPingImage method is:
7514 % MagickBooleanType MagickPingImage(MagickWand *wand,const char *filename)
7516 % A description of each parameter follows:
7518 % o wand: the magick wand.
7520 % o filename: the image filename.
7523 WandExport MagickBooleanType MagickPingImage(MagickWand *wand,
7524 const char *filename)
7532 assert(wand != (MagickWand *) NULL);
7533 assert(wand->signature == MagickWandSignature);
7534 if (wand->debug != MagickFalse)
7535 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
7536 ping_info=CloneImageInfo(wand->image_info);
7537 if (filename != (const char *) NULL)
7538 (void) CopyMagickString(ping_info->filename,filename,MagickPathExtent);
7539 images=PingImage(ping_info,wand->exception);
7540 ping_info=DestroyImageInfo(ping_info);
7541 if (images == (Image *) NULL)
7542 return(MagickFalse);
7543 return(InsertImageInWand(wand,images));
7547 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7551 % M a g i c k P i n g I m a g e B l o b %
7555 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7557 % MagickPingImageBlob() pings an image or image sequence from a blob.
7559 % The format of the MagickPingImageBlob method is:
7561 % MagickBooleanType MagickPingImageBlob(MagickWand *wand,
7562 % const void *blob,const size_t length)
7564 % A description of each parameter follows:
7566 % o wand: the magick wand.
7570 % o length: the blob length.
7573 WandExport MagickBooleanType MagickPingImageBlob(MagickWand *wand,
7574 const void *blob,const size_t length)
7582 assert(wand != (MagickWand *) NULL);
7583 assert(wand->signature == MagickWandSignature);
7584 if (wand->debug != MagickFalse)
7585 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
7586 read_info=CloneImageInfo(wand->image_info);
7587 SetImageInfoBlob(read_info,blob,length);
7588 images=PingImage(read_info,wand->exception);
7589 read_info=DestroyImageInfo(read_info);
7590 if (images == (Image *) NULL)
7591 return(MagickFalse);
7592 return(InsertImageInWand(wand,images));
7596 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7600 % M a g i c k P i n g I m a g e F i l e %
7604 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7606 % MagickPingImageFile() pings an image or image sequence from an open file
7609 % The format of the MagickPingImageFile method is:
7611 % MagickBooleanType MagickPingImageFile(MagickWand *wand,FILE *file)
7613 % A description of each parameter follows:
7615 % o wand: the magick wand.
7617 % o file: the file descriptor.
7620 WandExport MagickBooleanType MagickPingImageFile(MagickWand *wand,FILE *file)
7628 assert(wand != (MagickWand *) NULL);
7629 assert(wand->signature == MagickWandSignature);
7630 assert(file != (FILE *) NULL);
7631 if (wand->debug != MagickFalse)
7632 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
7633 read_info=CloneImageInfo(wand->image_info);
7634 SetImageInfoFile(read_info,file);
7635 images=PingImage(read_info,wand->exception);
7636 read_info=DestroyImageInfo(read_info);
7637 if (images == (Image *) NULL)
7638 return(MagickFalse);
7639 return(InsertImageInWand(wand,images));
7643 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7647 % M a g i c k P o l a r o i d I m a g e %
7651 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7653 % MagickPolaroidImage() simulates a Polaroid picture.
7655 % The format of the MagickPolaroidImage method is:
7657 % MagickBooleanType MagickPolaroidImage(MagickWand *wand,
7658 % const DrawingWand *drawing_wand,const char *caption,const double angle,
7659 % const PixelInterpolateMethod method)
7661 % A description of each parameter follows:
7663 % o wand: the magick wand.
7665 % o drawing_wand: the draw wand.
7667 % o caption: the Polaroid caption.
7669 % o angle: Apply the effect along this angle.
7671 % o method: the pixel interpolation method.
7674 WandExport MagickBooleanType MagickPolaroidImage(MagickWand *wand,
7675 const DrawingWand *drawing_wand,const char *caption,const double angle,
7676 const PixelInterpolateMethod method)
7684 assert(wand != (MagickWand *) NULL);
7685 assert(wand->signature == MagickWandSignature);
7686 if (wand->debug != MagickFalse)
7687 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
7688 if (wand->images == (Image *) NULL)
7689 ThrowWandException(WandError,"ContainsNoImages",wand->name);
7690 draw_info=PeekDrawingWand(drawing_wand);
7691 if (draw_info == (DrawInfo *) NULL)
7692 return(MagickFalse);
7693 polaroid_image=PolaroidImage(wand->images,draw_info,caption,angle,method,
7695 if (polaroid_image == (Image *) NULL)
7696 return(MagickFalse);
7697 ReplaceImageInList(&wand->images,polaroid_image);
7702 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7706 % M a g i c k P o s t e r i z e I m a g e %
7710 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7712 % MagickPosterizeImage() reduces the image to a limited number of color level.
7714 % The format of the MagickPosterizeImage method is:
7716 % MagickBooleanType MagickPosterizeImage(MagickWand *wand,
7717 % const size_t levels,const DitherMethod method)
7719 % A description of each parameter follows:
7721 % o wand: the magick wand.
7723 % o levels: Number of color levels allowed in each channel. Very low values
7724 % (2, 3, or 4) have the most visible effect.
7726 % o method: choose the dither method: UndefinedDitherMethod,
7727 % NoDitherMethod, RiemersmaDitherMethod, or FloydSteinbergDitherMethod.
7730 WandExport MagickBooleanType MagickPosterizeImage(MagickWand *wand,
7731 const size_t levels,const DitherMethod dither)
7736 assert(wand != (MagickWand *) NULL);
7737 assert(wand->signature == MagickWandSignature);
7738 if (wand->debug != MagickFalse)
7739 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
7740 if (wand->images == (Image *) NULL)
7741 ThrowWandException(WandError,"ContainsNoImages",wand->name);
7742 status=PosterizeImage(wand->images,levels,dither,wand->exception);
7747 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7751 % M a g i c k P r e v i e w I m a g e s %
7755 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7757 % MagickPreviewImages() tiles 9 thumbnails of the specified image with an
7758 % image processing operation applied at varying strengths. This helpful
7759 % to quickly pin-point an appropriate parameter for an image processing
7762 % The format of the MagickPreviewImages method is:
7764 % MagickWand *MagickPreviewImages(MagickWand *wand,
7765 % const PreviewType preview)
7767 % A description of each parameter follows:
7769 % o wand: the magick wand.
7771 % o preview: the preview type.
7774 WandExport MagickWand *MagickPreviewImages(MagickWand *wand,
7775 const PreviewType preview)
7780 assert(wand != (MagickWand *) NULL);
7781 assert(wand->signature == MagickWandSignature);
7782 if (wand->debug != MagickFalse)
7783 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
7784 if (wand->images == (Image *) NULL)
7785 return((MagickWand *) NULL);
7786 preview_image=PreviewImage(wand->images,preview,wand->exception);
7787 if (preview_image == (Image *) NULL)
7788 return((MagickWand *) NULL);
7789 return(CloneMagickWandFromImages(wand,preview_image));
7793 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7797 % M a g i c k P r e v i o u s I m a g e %
7801 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7803 % MagickPreviousImage() sets the previous image in the wand as the current
7806 % It is typically used after MagickSetLastIterator(), after which its first
7807 % use will set the last image as the current image (unless the wand is empty).
7809 % It will return MagickFalse when no more images are left to be returned
7810 % which happens when the wand is empty, or the current image is the first
7811 % image. At that point the iterator is than reset to again process images in
7812 % the forward direction, again starting with the first image in list. Images
7813 % added at this point are prepended.
7815 % Also at that point any images added to the wand using MagickAddImages() or
7816 % MagickReadImages() will be prepended before the first image. In this sense
7817 % the condition is not quite exactly the same as MagickResetIterator().
7819 % The format of the MagickPreviousImage method is:
7821 % MagickBooleanType MagickPreviousImage(MagickWand *wand)
7823 % A description of each parameter follows:
7825 % o wand: the magick wand.
7828 WandExport MagickBooleanType MagickPreviousImage(MagickWand *wand)
7830 assert(wand != (MagickWand *) NULL);
7831 assert(wand->signature == MagickWandSignature);
7832 if (wand->debug != MagickFalse)
7833 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
7834 if (wand->images == (Image *) NULL)
7835 ThrowWandException(WandError,"ContainsNoImages",wand->name);
7836 if (wand->image_pending != MagickFalse)
7838 wand->image_pending=MagickFalse; /* image returned no longer pending */
7841 if (GetPreviousImageInList(wand->images) == (Image *) NULL)
7843 wand->image_pending=MagickTrue; /* Next now re-gets first image */
7844 wand->insert_before=MagickTrue; /* insert/add prepends new images */
7845 return(MagickFalse);
7847 wand->images=GetPreviousImageInList(wand->images);
7852 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7856 % M a g i c k Q u a n t i z e I m a g e %
7860 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7862 % MagickQuantizeImage() analyzes the colors within a reference image and
7863 % chooses a fixed number of colors to represent the image. The goal of the
7864 % algorithm is to minimize the color difference between the input and output
7865 % image while minimizing the processing time.
7867 % The format of the MagickQuantizeImage method is:
7869 % MagickBooleanType MagickQuantizeImage(MagickWand *wand,
7870 % const size_t number_colors,const ColorspaceType colorspace,
7871 % const size_t treedepth,const DitherMethod dither_method,
7872 % const MagickBooleanType measure_error)
7874 % A description of each parameter follows:
7876 % o wand: the magick wand.
7878 % o number_colors: the number of colors.
7880 % o colorspace: Perform color reduction in this colorspace, typically
7883 % o treedepth: Normally, this integer value is zero or one. A zero or
7884 % one tells Quantize to choose a optimal tree depth of Log4(number_colors).% A tree of this depth generally allows the best representation of the
7885 % reference image with the least amount of memory and the fastest
7886 % computational speed. In some cases, such as an image with low color
7887 % dispersion (a few number of colors), a value other than
7888 % Log4(number_colors) is required. To expand the color tree completely,
7891 % o dither_method: choose from UndefinedDitherMethod, NoDitherMethod,
7892 % RiemersmaDitherMethod, FloydSteinbergDitherMethod.
7894 % o measure_error: A value other than zero measures the difference between
7895 % the original and quantized images. This difference is the total
7896 % quantization error. The error is computed by summing over all pixels
7897 % in an image the distance squared in RGB space between each reference
7898 % pixel value and its quantized value.
7901 WandExport MagickBooleanType MagickQuantizeImage(MagickWand *wand,
7902 const size_t number_colors,const ColorspaceType colorspace,
7903 const size_t treedepth,const DitherMethod dither_method,
7904 const MagickBooleanType measure_error)
7912 assert(wand != (MagickWand *) NULL);
7913 assert(wand->signature == MagickWandSignature);
7914 if (wand->debug != MagickFalse)
7915 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
7916 if (wand->images == (Image *) NULL)
7917 ThrowWandException(WandError,"ContainsNoImages",wand->name);
7918 quantize_info=CloneQuantizeInfo((QuantizeInfo *) NULL);
7919 quantize_info->number_colors=number_colors;
7920 quantize_info->dither_method=dither_method;
7921 quantize_info->tree_depth=treedepth;
7922 quantize_info->colorspace=colorspace;
7923 quantize_info->measure_error=measure_error;
7924 status=QuantizeImage(quantize_info,wand->images,wand->exception);
7925 quantize_info=DestroyQuantizeInfo(quantize_info);
7930 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7934 % M a g i c k Q u a n t i z e I m a g e s %
7938 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7940 % MagickQuantizeImages() analyzes the colors within a sequence of images and
7941 % chooses a fixed number of colors to represent the image. The goal of the
7942 % algorithm is to minimize the color difference between the input and output
7943 % image while minimizing the processing time.
7945 % The format of the MagickQuantizeImages method is:
7947 % MagickBooleanType MagickQuantizeImages(MagickWand *wand,
7948 % const size_t number_colors,const ColorspaceType colorspace,
7949 % const size_t treedepth,const DitherMethod dither_method,
7950 % const MagickBooleanType measure_error)
7952 % A description of each parameter follows:
7954 % o wand: the magick wand.
7956 % o number_colors: the number of colors.
7958 % o colorspace: Perform color reduction in this colorspace, typically
7961 % o treedepth: Normally, this integer value is zero or one. A zero or
7962 % one tells Quantize to choose a optimal tree depth of Log4(number_colors).% A tree of this depth generally allows the best representation of the
7963 % reference image with the least amount of memory and the fastest
7964 % computational speed. In some cases, such as an image with low color
7965 % dispersion (a few number of colors), a value other than
7966 % Log4(number_colors) is required. To expand the color tree completely,
7969 % o dither_method: choose from these dither methods: NoDitherMethod,
7970 % RiemersmaDitherMethod, or FloydSteinbergDitherMethod.
7972 % o measure_error: A value other than zero measures the difference between
7973 % the original and quantized images. This difference is the total
7974 % quantization error. The error is computed by summing over all pixels
7975 % in an image the distance squared in RGB space between each reference
7976 % pixel value and its quantized value.
7979 WandExport MagickBooleanType MagickQuantizeImages(MagickWand *wand,
7980 const size_t number_colors,const ColorspaceType colorspace,
7981 const size_t treedepth,const DitherMethod dither_method,
7982 const MagickBooleanType measure_error)
7990 assert(wand != (MagickWand *) NULL);
7991 assert(wand->signature == MagickWandSignature);
7992 if (wand->debug != MagickFalse)
7993 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
7994 if (wand->images == (Image *) NULL)
7995 ThrowWandException(WandError,"ContainsNoImages",wand->name);
7996 quantize_info=CloneQuantizeInfo((QuantizeInfo *) NULL);
7997 quantize_info->number_colors=number_colors;
7998 quantize_info->dither_method=dither_method;
7999 quantize_info->tree_depth=treedepth;
8000 quantize_info->colorspace=colorspace;
8001 quantize_info->measure_error=measure_error;
8002 status=QuantizeImages(quantize_info,wand->images,wand->exception);
8003 quantize_info=DestroyQuantizeInfo(quantize_info);
8008 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8012 % M a g i c k R o t a t i o n a l B l u r I m a g e %
8016 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8018 % MagickRotationalBlurImage() rotational blurs an image.
8020 % The format of the MagickRotationalBlurImage method is:
8022 % MagickBooleanType MagickRotationalBlurImage(MagickWand *wand,
8023 % const double angle)
8025 % A description of each parameter follows:
8027 % o wand: the magick wand.
8029 % o angle: the angle of the blur in degrees.
8032 WandExport MagickBooleanType MagickRotationalBlurImage(MagickWand *wand,
8038 assert(wand != (MagickWand *) NULL);
8039 assert(wand->signature == MagickWandSignature);
8040 if (wand->debug != MagickFalse)
8041 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
8042 if (wand->images == (Image *) NULL)
8043 ThrowWandException(WandError,"ContainsNoImages",wand->name);
8044 blur_image=RotationalBlurImage(wand->images,angle,wand->exception);
8045 if (blur_image == (Image *) NULL)
8046 return(MagickFalse);
8047 ReplaceImageInList(&wand->images,blur_image);
8052 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8056 % M a g i c k R a i s e I m a g e %
8060 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8062 % MagickRaiseImage() creates a simulated three-dimensional button-like effect
8063 % by lightening and darkening the edges of the image. Members width and
8064 % height of raise_info define the width of the vertical and horizontal
8065 % edge of the effect.
8067 % The format of the MagickRaiseImage method is:
8069 % MagickBooleanType MagickRaiseImage(MagickWand *wand,
8070 % const size_t width,const size_t height,const ssize_t x,
8071 % const ssize_t y,const MagickBooleanType raise)
8073 % A description of each parameter follows:
8075 % o wand: the magick wand.
8077 % o width,height,x,y: Define the dimensions of the area to raise.
8079 % o raise: A value other than zero creates a 3-D raise effect,
8080 % otherwise it has a lowered effect.
8083 WandExport MagickBooleanType MagickRaiseImage(MagickWand *wand,
8084 const size_t width,const size_t height,const ssize_t x,
8085 const ssize_t y,const MagickBooleanType raise)
8093 assert(wand != (MagickWand *) NULL);
8094 assert(wand->signature == MagickWandSignature);
8095 if (wand->debug != MagickFalse)
8096 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
8097 if (wand->images == (Image *) NULL)
8098 ThrowWandException(WandError,"ContainsNoImages",wand->name);
8099 raise_info.width=width;
8100 raise_info.height=height;
8103 status=RaiseImage(wand->images,&raise_info,raise,wand->exception);
8108 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8112 % M a g i c k R a n d o m T h r e s h o l d I m a g e %
8116 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8118 % MagickRandomThresholdImage() changes the value of individual pixels based on
8119 % the intensity of each pixel compared to threshold. The result is a
8120 % high-contrast, two color image.
8122 % The format of the MagickRandomThresholdImage method is:
8124 % MagickBooleanType MagickRandomThresholdImage(MagickWand *wand,
8125 % const double low,const double high)
8127 % A description of each parameter follows:
8129 % o wand: the magick wand.
8131 % o low,high: Specify the high and low thresholds. These values range from
8132 % 0 to QuantumRange.
8135 WandExport MagickBooleanType MagickRandomThresholdImage(MagickWand *wand,
8136 const double low,const double high)
8139 threshold[MagickPathExtent];
8141 assert(wand != (MagickWand *) NULL);
8142 assert(wand->signature == MagickWandSignature);
8143 if (wand->debug != MagickFalse)
8144 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
8145 if (wand->images == (Image *) NULL)
8146 ThrowWandException(WandError,"ContainsNoImages",wand->name);
8147 (void) FormatLocaleString(threshold,MagickPathExtent,"%gx%g",low,high);
8148 return(RandomThresholdImage(wand->images,threshold,wand->exception));
8152 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8156 % M a g i c k R e a d I m a g e %
8160 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8162 % MagickReadImage() reads an image or image sequence. The images are inserted
8163 % jjust before the current image pointer position.
8165 % Use MagickSetFirstIterator(), to insert new images before all the current
8166 % images in the wand, MagickSetLastIterator() to append add to the end,
8167 % MagickSetIteratorIndex() to place images just after the given index.
8169 % The format of the MagickReadImage method is:
8171 % MagickBooleanType MagickReadImage(MagickWand *wand,const char *filename)
8173 % A description of each parameter follows:
8175 % o wand: the magick wand.
8177 % o filename: the image filename.
8180 WandExport MagickBooleanType MagickReadImage(MagickWand *wand,
8181 const char *filename)
8189 assert(wand != (MagickWand *) NULL);
8190 assert(wand->signature == MagickWandSignature);
8191 if (wand->debug != MagickFalse)
8192 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
8193 read_info=CloneImageInfo(wand->image_info);
8194 if (filename != (const char *) NULL)
8195 (void) CopyMagickString(read_info->filename,filename,MagickPathExtent);
8196 images=ReadImage(read_info,wand->exception);
8197 read_info=DestroyImageInfo(read_info);
8198 if (images == (Image *) NULL)
8199 return(MagickFalse);
8200 return(InsertImageInWand(wand,images));
8204 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8208 % M a g i c k R e a d I m a g e B l o b %
8212 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8214 % MagickReadImageBlob() reads an image or image sequence from a blob.
8215 % In all other respects it is like MagickReadImage().
8217 % The format of the MagickReadImageBlob method is:
8219 % MagickBooleanType MagickReadImageBlob(MagickWand *wand,
8220 % const void *blob,const size_t length)
8222 % A description of each parameter follows:
8224 % o wand: the magick wand.
8228 % o length: the blob length.
8231 WandExport MagickBooleanType MagickReadImageBlob(MagickWand *wand,
8232 const void *blob,const size_t length)
8237 assert(wand != (MagickWand *) NULL);
8238 assert(wand->signature == MagickWandSignature);
8239 if (wand->debug != MagickFalse)
8240 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
8241 images=BlobToImage(wand->image_info,blob,length,wand->exception);
8242 if (images == (Image *) NULL)
8243 return(MagickFalse);
8244 return(InsertImageInWand(wand,images));
8248 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8252 % M a g i c k R e a d I m a g e F i l e %
8256 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8258 % MagickReadImageFile() reads an image or image sequence from an already
8259 % opened file descriptor. Otherwise it is like MagickReadImage().
8261 % The format of the MagickReadImageFile method is:
8263 % MagickBooleanType MagickReadImageFile(MagickWand *wand,FILE *file)
8265 % A description of each parameter follows:
8267 % o wand: the magick wand.
8269 % o file: the file descriptor.
8272 WandExport MagickBooleanType MagickReadImageFile(MagickWand *wand,FILE *file)
8280 assert(wand != (MagickWand *) NULL);
8281 assert(wand->signature == MagickWandSignature);
8282 assert(file != (FILE *) NULL);
8283 if (wand->debug != MagickFalse)
8284 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
8285 read_info=CloneImageInfo(wand->image_info);
8286 SetImageInfoFile(read_info,file);
8287 images=ReadImage(read_info,wand->exception);
8288 read_info=DestroyImageInfo(read_info);
8289 if (images == (Image *) NULL)
8290 return(MagickFalse);
8291 return(InsertImageInWand(wand,images));
8295 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8299 % M a g i c k R e m a p I m a g e %
8303 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8305 % MagickRemapImage() replaces the colors of an image with the closest color
8306 % from a reference image.
8308 % The format of the MagickRemapImage method is:
8310 % MagickBooleanType MagickRemapImage(MagickWand *wand,
8311 % const MagickWand *remap_wand,const DitherMethod method)
8313 % A description of each parameter follows:
8315 % o wand: the magick wand.
8317 % o affinity: the affinity wand.
8319 % o method: choose from these dither methods: NoDitherMethod,
8320 % RiemersmaDitherMethod, or FloydSteinbergDitherMethod.
8323 WandExport MagickBooleanType MagickRemapImage(MagickWand *wand,
8324 const MagickWand *remap_wand,const DitherMethod dither_method)
8332 assert(wand != (MagickWand *) NULL);
8333 assert(wand->signature == MagickWandSignature);
8334 if (wand->debug != MagickFalse)
8335 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
8336 if ((wand->images == (Image *) NULL) ||
8337 (remap_wand->images == (Image *) NULL))
8338 ThrowWandException(WandError,"ContainsNoImages",wand->name);
8339 quantize_info=AcquireQuantizeInfo(wand->image_info);
8340 quantize_info->dither_method=dither_method;
8341 status=RemapImage(quantize_info,wand->images,remap_wand->images,
8343 quantize_info=DestroyQuantizeInfo(quantize_info);
8348 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8352 % M a g i c k R e m o v e I m a g e %
8356 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8358 % MagickRemoveImage() removes an image from the image list.
8360 % The format of the MagickRemoveImage method is:
8362 % MagickBooleanType MagickRemoveImage(MagickWand *wand)
8364 % A description of each parameter follows:
8366 % o wand: the magick wand.
8368 % o insert: the splice wand.
8371 WandExport MagickBooleanType MagickRemoveImage(MagickWand *wand)
8373 assert(wand != (MagickWand *) NULL);
8374 assert(wand->signature == MagickWandSignature);
8375 if (wand->debug != MagickFalse)
8376 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
8377 if (wand->images == (Image *) NULL)
8378 ThrowWandException(WandError,"ContainsNoImages",wand->name);
8379 DeleteImageFromList(&wand->images);
8384 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8388 % M a g i c k R e s a m p l e I m a g e %
8392 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8394 % MagickResampleImage() resample image to desired resolution.
8396 % Bessel Blackman Box
8397 % Catrom Cubic Gaussian
8398 % Hanning Hermite Lanczos
8399 % Mitchell Point Quandratic
8402 % Most of the filters are FIR (finite impulse response), however, Bessel,
8403 % Gaussian, and Sinc are IIR (infinite impulse response). Bessel and Sinc
8404 % are windowed (brought down to zero) with the Blackman filter.
8406 % The format of the MagickResampleImage method is:
8408 % MagickBooleanType MagickResampleImage(MagickWand *wand,
8409 % const double x_resolution,const double y_resolution,
8410 % const FilterTypes filter)
8412 % A description of each parameter follows:
8414 % o wand: the magick wand.
8416 % o x_resolution: the new image x resolution.
8418 % o y_resolution: the new image y resolution.
8420 % o filter: Image filter to use.
8423 WandExport MagickBooleanType MagickResampleImage(MagickWand *wand,
8424 const double x_resolution,const double y_resolution,const FilterTypes filter)
8429 assert(wand != (MagickWand *) NULL);
8430 assert(wand->signature == MagickWandSignature);
8431 if (wand->debug != MagickFalse)
8432 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
8433 if (wand->images == (Image *) NULL)
8434 ThrowWandException(WandError,"ContainsNoImages",wand->name);
8435 resample_image=ResampleImage(wand->images,x_resolution,y_resolution,filter,
8437 if (resample_image == (Image *) NULL)
8438 return(MagickFalse);
8439 ReplaceImageInList(&wand->images,resample_image);
8444 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8448 % M a g i c k R e s e t I m a g e P a g e %
8452 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8454 % MagickResetImagePage() resets the Wand page canvas and position.
8456 % The format of the MagickResetImagePage method is:
8458 % MagickBooleanType MagickResetImagePage(MagickWand *wand,
8461 % A description of each parameter follows:
8463 % o wand: the magick wand.
8465 % o page: the relative page specification.
8468 WandExport MagickBooleanType MagickResetImagePage(MagickWand *wand,
8471 assert(wand != (MagickWand *) NULL);
8472 assert(wand->signature == MagickWandSignature);
8473 if (wand->debug != MagickFalse)
8474 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
8475 if (wand->images == (Image *) NULL)
8476 ThrowWandException(WandError,"ContainsNoImages",wand->name);
8477 if ((page == (char *) NULL) || (*page == '\0'))
8479 (void) ParseAbsoluteGeometry("0x0+0+0",&wand->images->page);
8482 return(ResetImagePage(wand->images,page));
8486 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8490 % M a g i c k R e s i z e I m a g e %
8494 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8496 % MagickResizeImage() scales an image to the desired dimensions with one of
8499 % Bessel Blackman Box
8500 % Catrom Cubic Gaussian
8501 % Hanning Hermite Lanczos
8502 % Mitchell Point Quandratic
8505 % Most of the filters are FIR (finite impulse response), however, Bessel,
8506 % Gaussian, and Sinc are IIR (infinite impulse response). Bessel and Sinc
8507 % are windowed (brought down to zero) with the Blackman filter.
8509 % The format of the MagickResizeImage method is:
8511 % MagickBooleanType MagickResizeImage(MagickWand *wand,
8512 % const size_t columns,const size_t rows,const FilterTypes filter)
8514 % A description of each parameter follows:
8516 % o wand: the magick wand.
8518 % o columns: the number of columns in the scaled image.
8520 % o rows: the number of rows in the scaled image.
8522 % o filter: Image filter to use.
8525 WandExport MagickBooleanType MagickResizeImage(MagickWand *wand,
8526 const size_t columns,const size_t rows,const FilterTypes filter)
8531 assert(wand != (MagickWand *) NULL);
8532 assert(wand->signature == MagickWandSignature);
8533 if (wand->debug != MagickFalse)
8534 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
8535 if (wand->images == (Image *) NULL)
8536 ThrowWandException(WandError,"ContainsNoImages",wand->name);
8537 resize_image=ResizeImage(wand->images,columns,rows,filter,wand->exception);
8538 if (resize_image == (Image *) NULL)
8539 return(MagickFalse);
8540 ReplaceImageInList(&wand->images,resize_image);
8545 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8549 % M a g i c k R o l l I m a g e %
8553 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8555 % MagickRollImage() offsets an image as defined by x and y.
8557 % The format of the MagickRollImage method is:
8559 % MagickBooleanType MagickRollImage(MagickWand *wand,const ssize_t x,
8562 % A description of each parameter follows:
8564 % o wand: the magick wand.
8566 % o x: the x offset.
8568 % o y: the y offset.
8572 WandExport MagickBooleanType MagickRollImage(MagickWand *wand,
8573 const ssize_t x,const ssize_t y)
8578 assert(wand != (MagickWand *) NULL);
8579 assert(wand->signature == MagickWandSignature);
8580 if (wand->debug != MagickFalse)
8581 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
8582 if (wand->images == (Image *) NULL)
8583 ThrowWandException(WandError,"ContainsNoImages",wand->name);
8584 roll_image=RollImage(wand->images,x,y,wand->exception);
8585 if (roll_image == (Image *) NULL)
8586 return(MagickFalse);
8587 ReplaceImageInList(&wand->images,roll_image);
8592 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8596 % M a g i c k R o t a t e I m a g e %
8600 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8602 % MagickRotateImage() rotates an image the specified number of degrees. Empty
8603 % triangles left over from rotating the image are filled with the
8606 % The format of the MagickRotateImage method is:
8608 % MagickBooleanType MagickRotateImage(MagickWand *wand,
8609 % const PixelWand *background,const double degrees)
8611 % A description of each parameter follows:
8613 % o wand: the magick wand.
8615 % o background: the background pixel wand.
8617 % o degrees: the number of degrees to rotate the image.
8621 WandExport MagickBooleanType MagickRotateImage(MagickWand *wand,
8622 const PixelWand *background,const double degrees)
8627 assert(wand != (MagickWand *) NULL);
8628 assert(wand->signature == MagickWandSignature);
8629 if (wand->debug != MagickFalse)
8630 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
8631 if (wand->images == (Image *) NULL)
8632 ThrowWandException(WandError,"ContainsNoImages",wand->name);
8633 PixelGetQuantumPacket(background,&wand->images->background_color);
8634 rotate_image=RotateImage(wand->images,degrees,wand->exception);
8635 if (rotate_image == (Image *) NULL)
8636 return(MagickFalse);
8637 ReplaceImageInList(&wand->images,rotate_image);
8642 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8646 % M a g i c k S a m p l e I m a g e %
8650 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8652 % MagickSampleImage() scales an image to the desired dimensions with pixel
8653 % sampling. Unlike other scaling methods, this method does not introduce
8654 % any additional color into the scaled image.
8656 % The format of the MagickSampleImage method is:
8658 % MagickBooleanType MagickSampleImage(MagickWand *wand,
8659 % const size_t columns,const size_t rows)
8661 % A description of each parameter follows:
8663 % o wand: the magick wand.
8665 % o columns: the number of columns in the scaled image.
8667 % o rows: the number of rows in the scaled image.
8671 WandExport MagickBooleanType MagickSampleImage(MagickWand *wand,
8672 const size_t columns,const size_t rows)
8677 assert(wand != (MagickWand *) NULL);
8678 assert(wand->signature == MagickWandSignature);
8679 if (wand->debug != MagickFalse)
8680 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
8681 if (wand->images == (Image *) NULL)
8682 ThrowWandException(WandError,"ContainsNoImages",wand->name);
8683 sample_image=SampleImage(wand->images,columns,rows,wand->exception);
8684 if (sample_image == (Image *) NULL)
8685 return(MagickFalse);
8686 ReplaceImageInList(&wand->images,sample_image);
8691 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8695 % M a g i c k S c a l e I m a g e %
8699 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8701 % MagickScaleImage() scales the size of an image to the given dimensions.
8703 % The format of the MagickScaleImage method is:
8705 % MagickBooleanType MagickScaleImage(MagickWand *wand,
8706 % const size_t columns,const size_t rows)
8708 % A description of each parameter follows:
8710 % o wand: the magick wand.
8712 % o columns: the number of columns in the scaled image.
8714 % o rows: the number of rows in the scaled image.
8718 WandExport MagickBooleanType MagickScaleImage(MagickWand *wand,
8719 const size_t columns,const size_t rows)
8724 assert(wand != (MagickWand *) NULL);
8725 assert(wand->signature == MagickWandSignature);
8726 if (wand->debug != MagickFalse)
8727 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
8728 if (wand->images == (Image *) NULL)
8729 ThrowWandException(WandError,"ContainsNoImages",wand->name);
8730 scale_image=ScaleImage(wand->images,columns,rows,wand->exception);
8731 if (scale_image == (Image *) NULL)
8732 return(MagickFalse);
8733 ReplaceImageInList(&wand->images,scale_image);
8738 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8742 % M a g i c k S e g m e n t I m a g e %
8746 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8748 % MagickSegmentImage() segments an image by analyzing the histograms of the
8749 % color components and identifying units that are homogeneous with the fuzzy
8750 % C-means technique.
8752 % The format of the SegmentImage method is:
8754 % MagickBooleanType MagickSegmentImage(MagickWand *wand,
8755 % const ColorspaceType colorspace,const MagickBooleanType verbose,
8756 % const double cluster_threshold,const double smooth_threshold)
8758 % A description of each parameter follows.
8762 % o colorspace: the image colorspace.
8764 % o verbose: Set to MagickTrue to print detailed information about the
8765 % identified classes.
8767 % o cluster_threshold: This represents the minimum number of pixels
8768 % contained in a hexahedra before it can be considered valid (expressed as
8771 % o smooth_threshold: the smoothing threshold eliminates noise in the second
8772 % derivative of the histogram. As the value is increased, you can expect a
8773 % smoother second derivative.
8776 MagickExport MagickBooleanType MagickSegmentImage(MagickWand *wand,
8777 const ColorspaceType colorspace,const MagickBooleanType verbose,
8778 const double cluster_threshold,const double smooth_threshold)
8783 assert(wand != (MagickWand *) NULL);
8784 assert(wand->signature == MagickWandSignature);
8785 if (wand->debug != MagickFalse)
8786 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
8787 if (wand->images == (Image *) NULL)
8788 ThrowWandException(WandError,"ContainsNoImages",wand->name);
8789 status=SegmentImage(wand->images,colorspace,verbose,cluster_threshold,
8790 smooth_threshold,wand->exception);
8795 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8799 % M a g i c k S e l e c t i v e B l u r I m a g e %
8803 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8805 % MagickSelectiveBlurImage() selectively blur an image within a contrast
8806 % threshold. It is similar to the unsharpen mask that sharpens everything with
8807 % contrast above a certain threshold.
8809 % The format of the MagickSelectiveBlurImage method is:
8811 % MagickBooleanType MagickSelectiveBlurImage(MagickWand *wand,
8812 % const double radius,const double sigma,const double threshold)
8814 % A description of each parameter follows:
8816 % o wand: the magick wand.
8818 % o radius: the radius of the gaussian, in pixels, not counting the center
8821 % o sigma: the standard deviation of the gaussian, in pixels.
8823 % o threshold: only pixels within this contrast threshold are included
8824 % in the blur operation.
8827 WandExport MagickBooleanType MagickSelectiveBlurImage(MagickWand *wand,
8828 const double radius,const double sigma,const double threshold)
8833 assert(wand != (MagickWand *) NULL);
8834 assert(wand->signature == MagickWandSignature);
8835 if (wand->debug != MagickFalse)
8836 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
8837 if (wand->images == (Image *) NULL)
8838 ThrowWandException(WandError,"ContainsNoImages",wand->name);
8839 blur_image=SelectiveBlurImage(wand->images,radius,sigma,threshold,
8841 if (blur_image == (Image *) NULL)
8842 return(MagickFalse);
8843 ReplaceImageInList(&wand->images,blur_image);
8848 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8852 % M a g i c k S e p a r a t e I m a g e C h a n n e l %
8856 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8858 % MagickSeparateImage() separates a channel from the image and returns a
8859 % grayscale image. A channel is a particular color component of each pixel
8862 % The format of the MagickSeparateImage method is:
8864 % MagickBooleanType MagickSeparateImage(MagickWand *wand,
8865 % const ChannelType channel)
8867 % A description of each parameter follows:
8869 % o wand: the magick wand.
8871 % o channel: the channel.
8874 WandExport MagickBooleanType MagickSeparateImage(MagickWand *wand,
8875 const ChannelType channel)
8880 assert(wand != (MagickWand *) NULL);
8881 assert(wand->signature == MagickWandSignature);
8882 if (wand->debug != MagickFalse)
8883 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
8884 if (wand->images == (Image *) NULL)
8885 ThrowWandException(WandError,"ContainsNoImages",wand->name);
8886 separate_image=SeparateImage(wand->images,channel,wand->exception);
8887 if (separate_image == (Image *) NULL)
8888 return(MagickFalse);
8889 ReplaceImageInList(&wand->images,separate_image);
8894 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8898 % M a g i c k S e p i a T o n e I m a g e %
8902 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8904 % MagickSepiaToneImage() applies a special effect to the image, similar to the
8905 % effect achieved in a photo darkroom by sepia toning. Threshold ranges from
8906 % 0 to QuantumRange and is a measure of the extent of the sepia toning. A
8907 % threshold of 80% is a good starting point for a reasonable tone.
8909 % The format of the MagickSepiaToneImage method is:
8911 % MagickBooleanType MagickSepiaToneImage(MagickWand *wand,
8912 % const double threshold)
8914 % A description of each parameter follows:
8916 % o wand: the magick wand.
8918 % o threshold: Define the extent of the sepia toning.
8921 WandExport MagickBooleanType MagickSepiaToneImage(MagickWand *wand,
8922 const double threshold)
8927 assert(wand != (MagickWand *) NULL);
8928 assert(wand->signature == MagickWandSignature);
8929 if (wand->debug != MagickFalse)
8930 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
8931 if (wand->images == (Image *) NULL)
8932 ThrowWandException(WandError,"ContainsNoImages",wand->name);
8933 sepia_image=SepiaToneImage(wand->images,threshold,wand->exception);
8934 if (sepia_image == (Image *) NULL)
8935 return(MagickFalse);
8936 ReplaceImageInList(&wand->images,sepia_image);
8941 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8945 % M a g i c k S e t I m a g e %
8949 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8951 % MagickSetImage() replaces the last image returned by MagickSetIteratorIndex(),
8952 % MagickNextImage(), MagickPreviousImage() with the images from the specified
8955 % The format of the MagickSetImage method is:
8957 % MagickBooleanType MagickSetImage(MagickWand *wand,
8958 % const MagickWand *set_wand)
8960 % A description of each parameter follows:
8962 % o wand: the magick wand.
8964 % o set_wand: the set_wand wand.
8967 WandExport MagickBooleanType MagickSetImage(MagickWand *wand,
8968 const MagickWand *set_wand)
8973 assert(wand != (MagickWand *) NULL);
8974 assert(wand->signature == MagickWandSignature);
8975 if (wand->debug != MagickFalse)
8976 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
8977 assert(set_wand != (MagickWand *) NULL);
8978 assert(set_wand->signature == MagickWandSignature);
8979 if (wand->debug != MagickFalse)
8980 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",set_wand->name);
8981 if (set_wand->images == (Image *) NULL)
8982 ThrowWandException(WandError,"ContainsNoImages",wand->name);
8983 images=CloneImageList(set_wand->images,wand->exception);
8984 if (images == (Image *) NULL)
8985 return(MagickFalse);
8986 ReplaceImageInList(&wand->images,images);
8991 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8995 % M a g i c k S e t I m a g e A l p h a C h a n n e l %
8999 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9001 % MagickSetImageAlphaChannel() activates, deactivates, resets, or sets the
9004 % The format of the MagickSetImageAlphaChannel method is:
9006 % MagickBooleanType MagickSetImageAlphaChannel(MagickWand *wand,
9007 % const AlphaChannelOption alpha_type)
9009 % A description of each parameter follows:
9011 % o wand: the magick wand.
9013 % o alpha_type: the alpha channel type: ActivateAlphaChannel,
9014 % DeactivateAlphaChannel, OpaqueAlphaChannel, or SetAlphaChannel.
9017 WandExport MagickBooleanType MagickSetImageAlphaChannel(MagickWand *wand,
9018 const AlphaChannelOption alpha_type)
9020 assert(wand != (MagickWand *) NULL);
9021 assert(wand->signature == MagickWandSignature);
9022 if (wand->debug != MagickFalse)
9023 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9024 if (wand->images == (Image *) NULL)
9025 ThrowWandException(WandError,"ContainsNoImages",wand->name);
9026 return(SetImageAlphaChannel(wand->images,alpha_type,wand->exception));
9030 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9034 % M a g i c k S e t I m a g e B a c k g r o u n d C o l o r %
9038 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9040 % MagickSetImageBackgroundColor() sets the image background color.
9042 % The format of the MagickSetImageBackgroundColor method is:
9044 % MagickBooleanType MagickSetImageBackgroundColor(MagickWand *wand,
9045 % const PixelWand *background)
9047 % A description of each parameter follows:
9049 % o wand: the magick wand.
9051 % o background: the background pixel wand.
9054 WandExport MagickBooleanType MagickSetImageBackgroundColor(MagickWand *wand,
9055 const PixelWand *background)
9057 assert(wand != (MagickWand *) NULL);
9058 assert(wand->signature == MagickWandSignature);
9059 if (wand->debug != MagickFalse)
9060 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9061 if (wand->images == (Image *) NULL)
9062 ThrowWandException(WandError,"ContainsNoImages",wand->name);
9063 PixelGetQuantumPacket(background,&wand->images->background_color);
9068 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9072 % M a g i c k S e t I m a g e B l u e P r i m a r y %
9076 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9078 % MagickSetImageBluePrimary() sets the image chromaticity blue primary point.
9080 % The format of the MagickSetImageBluePrimary method is:
9082 % MagickBooleanType MagickSetImageBluePrimary(MagickWand *wand,
9083 % const double x,const double y)
9085 % A description of each parameter follows:
9087 % o wand: the magick wand.
9089 % o x: the blue primary x-point.
9091 % o y: the blue primary y-point.
9094 WandExport MagickBooleanType MagickSetImageBluePrimary(MagickWand *wand,
9095 const double x,const double y)
9097 assert(wand != (MagickWand *) NULL);
9098 assert(wand->signature == MagickWandSignature);
9099 if (wand->debug != MagickFalse)
9100 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9101 if (wand->images == (Image *) NULL)
9102 ThrowWandException(WandError,"ContainsNoImages",wand->name);
9103 wand->images->chromaticity.blue_primary.x=x;
9104 wand->images->chromaticity.blue_primary.y=y;
9109 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9113 % M a g i c k S e t I m a g e B o r d e r C o l o r %
9117 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9119 % MagickSetImageBorderColor() sets the image border color.
9121 % The format of the MagickSetImageBorderColor method is:
9123 % MagickBooleanType MagickSetImageBorderColor(MagickWand *wand,
9124 % const PixelWand *border)
9126 % A description of each parameter follows:
9128 % o wand: the magick wand.
9130 % o border: the border pixel wand.
9133 WandExport MagickBooleanType MagickSetImageBorderColor(MagickWand *wand,
9134 const PixelWand *border)
9136 assert(wand != (MagickWand *) NULL);
9137 assert(wand->signature == MagickWandSignature);
9138 if (wand->debug != MagickFalse)
9139 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9140 if (wand->images == (Image *) NULL)
9141 ThrowWandException(WandError,"ContainsNoImages",wand->name);
9142 PixelGetQuantumPacket(border,&wand->images->border_color);
9147 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9151 % M a g i c k S e t I m a g e C h a n n e l M a s k %
9155 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9157 % MagickSetImageChannelMask() sets image channel mask.
9159 % The format of the MagickSetImageChannelMask method is:
9161 % ChannelType MagickSetImageChannelMask(MagickWand *wand,
9162 % const ChannelType channel_mask)
9164 % A description of each parameter follows:
9166 % o wand: the magick wand.
9168 % o channel_mask: the channel_mask wand.
9171 WandExport ChannelType MagickSetImageChannelMask(MagickWand *wand,
9172 const ChannelType channel_mask)
9174 assert(wand != (MagickWand *) NULL);
9175 assert(wand->signature == MagickWandSignature);
9176 if (wand->debug != MagickFalse)
9177 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9178 return(SetImageChannelMask(wand->images,channel_mask));
9182 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9186 % M a g i c k S e t I m a g e M a s k %
9190 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9192 % MagickSetImageMask() sets image clip mask.
9194 % The format of the MagickSetImageMask method is:
9196 % MagickBooleanType MagickSetImageMask(MagickWand *wand,
9197 % const PixelMask type,const MagickWand *clip_mask)
9199 % A description of each parameter follows:
9201 % o wand: the magick wand.
9203 % o type: type of mask, ReadPixelMask or WritePixelMask.
9205 % o clip_mask: the clip_mask wand.
9208 WandExport MagickBooleanType MagickSetImageMask(MagickWand *wand,
9209 const PixelMask type,const MagickWand *clip_mask)
9211 assert(wand != (MagickWand *) NULL);
9212 assert(wand->signature == MagickWandSignature);
9213 if (wand->debug != MagickFalse)
9214 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9215 assert(clip_mask != (MagickWand *) NULL);
9216 assert(clip_mask->signature == MagickWandSignature);
9217 if (clip_mask->debug != MagickFalse)
9218 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",clip_mask->name);
9219 if (clip_mask->images == (Image *) NULL)
9220 ThrowWandException(WandError,"ContainsNoImages",clip_mask->name);
9221 return(SetImageMask(wand->images,type,clip_mask->images,wand->exception));
9225 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9229 % M a g i c k S e t I m a g e C o l o r %
9233 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9235 % MagickSetImageColor() set the entire wand canvas to the specified color.
9237 % The format of the MagickSetImageColor method is:
9239 % MagickBooleanType MagickSetImageColor(MagickWand *wand,
9240 % const PixelWand *color)
9242 % A description of each parameter follows:
9244 % o wand: the magick wand.
9246 % o background: the image color.
9249 WandExport MagickBooleanType MagickSetImageColor(MagickWand *wand,
9250 const PixelWand *color)
9255 assert(wand != (MagickWand *) NULL);
9256 assert(wand->signature == MagickWandSignature);
9257 if (wand->debug != MagickFalse)
9258 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9259 PixelGetMagickColor(color,&pixel);
9260 return(SetImageColor(wand->images,&pixel,wand->exception));
9264 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9268 % M a g i c k S e t I m a g e C o l o r m a p C o l o r %
9272 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9274 % MagickSetImageColormapColor() sets the color of the specified colormap
9277 % The format of the MagickSetImageColormapColor method is:
9279 % MagickBooleanType MagickSetImageColormapColor(MagickWand *wand,
9280 % const size_t index,const PixelWand *color)
9282 % A description of each parameter follows:
9284 % o wand: the magick wand.
9286 % o index: the offset into the image colormap.
9288 % o color: Return the colormap color in this wand.
9291 WandExport MagickBooleanType MagickSetImageColormapColor(MagickWand *wand,
9292 const size_t index,const PixelWand *color)
9294 assert(wand != (MagickWand *) NULL);
9295 assert(wand->signature == MagickWandSignature);
9296 if (wand->debug != MagickFalse)
9297 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9298 if (wand->images == (Image *) NULL)
9299 ThrowWandException(WandError,"ContainsNoImages",wand->name);
9300 if ((wand->images->colormap == (PixelInfo *) NULL) ||
9301 (index >= wand->images->colors))
9302 ThrowWandException(WandError,"InvalidColormapIndex",wand->name);
9303 PixelGetQuantumPacket(color,wand->images->colormap+index);
9304 return(SyncImage(wand->images,wand->exception));
9308 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9312 % M a g i c k S e t I m a g e C o l o r s p a c e %
9316 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9318 % MagickSetImageColorspace() sets the image colorspace. But does not modify
9321 % The format of the MagickSetImageColorspace method is:
9323 % MagickBooleanType MagickSetImageColorspace(MagickWand *wand,
9324 % const ColorspaceType colorspace)
9326 % A description of each parameter follows:
9328 % o wand: the magick wand.
9330 % o colorspace: the image colorspace: UndefinedColorspace, RGBColorspace,
9331 % GRAYColorspace, TransparentColorspace, OHTAColorspace, XYZColorspace,
9332 % YCbCrColorspace, YCCColorspace, YIQColorspace, YPbPrColorspace,
9333 % YPbPrColorspace, YUVColorspace, CMYKColorspace, sRGBColorspace,
9334 % HSLColorspace, or HWBColorspace.
9337 WandExport MagickBooleanType MagickSetImageColorspace(MagickWand *wand,
9338 const ColorspaceType colorspace)
9340 assert(wand != (MagickWand *) NULL);
9341 assert(wand->signature == MagickWandSignature);
9342 if (wand->debug != MagickFalse)
9343 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9344 if (wand->images == (Image *) NULL)
9345 ThrowWandException(WandError,"ContainsNoImages",wand->name);
9346 return(SetImageColorspace(wand->images,colorspace,wand->exception));
9350 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9354 % M a g i c k S e t I m a g e C o m p o s e %
9358 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9360 % MagickSetImageCompose() sets the image composite operator, useful for
9361 % specifying how to composite the image thumbnail when using the
9362 % MagickMontageImage() method.
9364 % The format of the MagickSetImageCompose method is:
9366 % MagickBooleanType MagickSetImageCompose(MagickWand *wand,
9367 % const CompositeOperator compose)
9369 % A description of each parameter follows:
9371 % o wand: the magick wand.
9373 % o compose: the image composite operator.
9376 WandExport MagickBooleanType MagickSetImageCompose(MagickWand *wand,
9377 const CompositeOperator compose)
9379 assert(wand != (MagickWand *) NULL);
9380 assert(wand->signature == MagickWandSignature);
9381 if (wand->debug != MagickFalse)
9382 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9383 if (wand->images == (Image *) NULL)
9384 ThrowWandException(WandError,"ContainsNoImages",wand->name);
9385 wand->images->compose=compose;
9390 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9394 % M a g i c k S e t I m a g e C o m p r e s s i o n %
9398 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9400 % MagickSetImageCompression() sets the image compression.
9402 % The format of the MagickSetImageCompression method is:
9404 % MagickBooleanType MagickSetImageCompression(MagickWand *wand,
9405 % const CompressionType compression)
9407 % A description of each parameter follows:
9409 % o wand: the magick wand.
9411 % o compression: the image compression type.
9414 WandExport MagickBooleanType MagickSetImageCompression(MagickWand *wand,
9415 const CompressionType compression)
9417 assert(wand != (MagickWand *) NULL);
9418 assert(wand->signature == MagickWandSignature);
9419 if (wand->debug != MagickFalse)
9420 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9421 if (wand->images == (Image *) NULL)
9422 ThrowWandException(WandError,"ContainsNoImages",wand->name);
9423 wand->images->compression=compression;
9428 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9432 % M a g i c k S e t I m a g e C o m p r e s s i o n Q u a l i t y %
9436 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9438 % MagickSetImageCompressionQuality() sets the image compression quality.
9440 % The format of the MagickSetImageCompressionQuality method is:
9442 % MagickBooleanType MagickSetImageCompressionQuality(MagickWand *wand,
9443 % const size_t quality)
9445 % A description of each parameter follows:
9447 % o wand: the magick wand.
9449 % o quality: the image compression tlityype.
9452 WandExport MagickBooleanType MagickSetImageCompressionQuality(MagickWand *wand,
9453 const size_t quality)
9455 assert(wand != (MagickWand *) NULL);
9456 assert(wand->signature == MagickWandSignature);
9457 if (wand->debug != MagickFalse)
9458 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9459 if (wand->images == (Image *) NULL)
9460 ThrowWandException(WandError,"ContainsNoImages",wand->name);
9461 wand->images->quality=quality;
9466 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9470 % M a g i c k S e t I m a g e D e l a y %
9474 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9476 % MagickSetImageDelay() sets the image delay.
9478 % The format of the MagickSetImageDelay method is:
9480 % MagickBooleanType MagickSetImageDelay(MagickWand *wand,
9481 % const size_t delay)
9483 % A description of each parameter follows:
9485 % o wand: the magick wand.
9487 % o delay: the image delay in ticks-per-second units.
9490 WandExport MagickBooleanType MagickSetImageDelay(MagickWand *wand,
9493 assert(wand != (MagickWand *) NULL);
9494 assert(wand->signature == MagickWandSignature);
9495 if (wand->debug != MagickFalse)
9496 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9497 if (wand->images == (Image *) NULL)
9498 ThrowWandException(WandError,"ContainsNoImages",wand->name);
9499 wand->images->delay=delay;
9504 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9508 % M a g i c k S e t I m a g e D e p t h %
9512 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9514 % MagickSetImageDepth() sets the image depth.
9516 % The format of the MagickSetImageDepth method is:
9518 % MagickBooleanType MagickSetImageDepth(MagickWand *wand,
9519 % const size_t depth)
9521 % A description of each parameter follows:
9523 % o wand: the magick wand.
9525 % o depth: the image depth in bits: 8, 16, or 32.
9528 WandExport MagickBooleanType MagickSetImageDepth(MagickWand *wand,
9531 assert(wand != (MagickWand *) NULL);
9532 assert(wand->signature == MagickWandSignature);
9533 if (wand->debug != MagickFalse)
9534 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9535 if (wand->images == (Image *) NULL)
9536 ThrowWandException(WandError,"ContainsNoImages",wand->name);
9537 return(SetImageDepth(wand->images,depth,wand->exception));
9541 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9545 % M a g i c k S e t I m a g e D i s p o s e %
9549 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9551 % MagickSetImageDispose() sets the image disposal method.
9553 % The format of the MagickSetImageDispose method is:
9555 % MagickBooleanType MagickSetImageDispose(MagickWand *wand,
9556 % const DisposeType dispose)
9558 % A description of each parameter follows:
9560 % o wand: the magick wand.
9562 % o dispose: the image disposeal type.
9565 WandExport MagickBooleanType MagickSetImageDispose(MagickWand *wand,
9566 const DisposeType dispose)
9568 assert(wand != (MagickWand *) NULL);
9569 assert(wand->signature == MagickWandSignature);
9570 if (wand->debug != MagickFalse)
9571 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9572 if (wand->images == (Image *) NULL)
9573 ThrowWandException(WandError,"ContainsNoImages",wand->name);
9574 wand->images->dispose=dispose;
9579 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9583 % M a g i c k S e t I m a g e E n d i a n %
9587 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9589 % MagickSetImageEndian() sets the image endian method.
9591 % The format of the MagickSetImageEndian method is:
9593 % MagickBooleanType MagickSetImageEndian(MagickWand *wand,
9594 % const EndianType endian)
9596 % A description of each parameter follows:
9598 % o wand: the magick wand.
9600 % o endian: the image endian type.
9603 WandExport MagickBooleanType MagickSetImageEndian(MagickWand *wand,
9604 const EndianType endian)
9606 assert(wand != (MagickWand *) NULL);
9607 assert(wand->signature == MagickWandSignature);
9608 if (wand->debug != MagickFalse)
9609 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9610 if (wand->images == (Image *) NULL)
9611 ThrowWandException(WandError,"ContainsNoImages",wand->name);
9612 wand->images->endian=endian;
9617 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9621 % M a g i c k S e t I m a g e E x t e n t %
9625 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9627 % MagickSetImageExtent() sets the image size (i.e. columns & rows).
9629 % The format of the MagickSetImageExtent method is:
9631 % MagickBooleanType MagickSetImageExtent(MagickWand *wand,
9632 % const size_t columns,const unsigned rows)
9634 % A description of each parameter follows:
9636 % o wand: the magick wand.
9638 % o columns: The image width in pixels.
9640 % o rows: The image height in pixels.
9643 WandExport MagickBooleanType MagickSetImageExtent(MagickWand *wand,
9644 const size_t columns,const size_t rows)
9646 assert(wand != (MagickWand *) NULL);
9647 assert(wand->signature == MagickWandSignature);
9648 if (wand->debug != MagickFalse)
9649 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9650 if (wand->images == (Image *) NULL)
9651 ThrowWandException(WandError,"ContainsNoImages",wand->name);
9652 return(SetImageExtent(wand->images,columns,rows,wand->exception));
9656 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9660 % M a g i c k S e t I m a g e F i l e n a m e %
9664 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9666 % MagickSetImageFilename() sets the filename of a particular image in a
9669 % The format of the MagickSetImageFilename method is:
9671 % MagickBooleanType MagickSetImageFilename(MagickWand *wand,
9672 % const char *filename)
9674 % A description of each parameter follows:
9676 % o wand: the magick wand.
9678 % o filename: the image filename.
9681 WandExport MagickBooleanType MagickSetImageFilename(MagickWand *wand,
9682 const char *filename)
9684 assert(wand != (MagickWand *) NULL);
9685 assert(wand->signature == MagickWandSignature);
9686 if (wand->debug != MagickFalse)
9687 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9688 if (wand->images == (Image *) NULL)
9689 ThrowWandException(WandError,"ContainsNoImages",wand->name);
9690 if (filename != (const char *) NULL)
9691 (void) CopyMagickString(wand->images->filename,filename,MagickPathExtent);
9696 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9700 % M a g i c k S e t I m a g e F o r m a t %
9704 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9706 % MagickSetImageFormat() sets the format of a particular image in a
9709 % The format of the MagickSetImageFormat method is:
9711 % MagickBooleanType MagickSetImageFormat(MagickWand *wand,
9712 % const char *format)
9714 % A description of each parameter follows:
9716 % o wand: the magick wand.
9718 % o format: the image format.
9721 WandExport MagickBooleanType MagickSetImageFormat(MagickWand *wand,
9727 assert(wand != (MagickWand *) NULL);
9728 assert(wand->signature == MagickWandSignature);
9729 if (wand->debug != MagickFalse)
9730 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9731 if (wand->images == (Image *) NULL)
9732 ThrowWandException(WandError,"ContainsNoImages",wand->name);
9733 if ((format == (char *) NULL) || (*format == '\0'))
9735 *wand->images->magick='\0';
9738 magick_info=GetMagickInfo(format,wand->exception);
9739 if (magick_info == (const MagickInfo *) NULL)
9740 return(MagickFalse);
9741 ClearMagickException(wand->exception);
9742 (void) CopyMagickString(wand->images->magick,format,MagickPathExtent);
9747 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9751 % M a g i c k S e t I m a g e F u z z %
9755 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9757 % MagickSetImageFuzz() sets the image fuzz.
9759 % The format of the MagickSetImageFuzz method is:
9761 % MagickBooleanType MagickSetImageFuzz(MagickWand *wand,
9762 % const double fuzz)
9764 % A description of each parameter follows:
9766 % o wand: the magick wand.
9768 % o fuzz: the image fuzz.
9771 WandExport MagickBooleanType MagickSetImageFuzz(MagickWand *wand,
9774 assert(wand != (MagickWand *) NULL);
9775 assert(wand->signature == MagickWandSignature);
9776 if (wand->debug != MagickFalse)
9777 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9778 if (wand->images == (Image *) NULL)
9779 ThrowWandException(WandError,"ContainsNoImages",wand->name);
9780 wand->images->fuzz=fuzz;
9785 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9789 % M a g i c k S e t I m a g e G a m m a %
9793 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9795 % MagickSetImageGamma() sets the image gamma.
9797 % The format of the MagickSetImageGamma method is:
9799 % MagickBooleanType MagickSetImageGamma(MagickWand *wand,
9800 % const double gamma)
9802 % A description of each parameter follows:
9804 % o wand: the magick wand.
9806 % o gamma: the image gamma.
9809 WandExport MagickBooleanType MagickSetImageGamma(MagickWand *wand,
9812 assert(wand != (MagickWand *) NULL);
9813 assert(wand->signature == MagickWandSignature);
9814 if (wand->debug != MagickFalse)
9815 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9816 if (wand->images == (Image *) NULL)
9817 ThrowWandException(WandError,"ContainsNoImages",wand->name);
9818 wand->images->gamma=gamma;
9823 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9827 % M a g i c k S e t I m a g e G r a v i t y %
9831 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9833 % MagickSetImageGravity() sets the image gravity type.
9835 % The format of the MagickSetImageGravity method is:
9837 % MagickBooleanType MagickSetImageGravity(MagickWand *wand,
9838 % const GravityType gravity)
9840 % A description of each parameter follows:
9842 % o wand: the magick wand.
9844 % o gravity: positioning gravity (NorthWestGravity, NorthGravity,
9845 % NorthEastGravity, WestGravity, CenterGravity,
9846 % EastGravity, SouthWestGravity, SouthGravity,
9850 WandExport MagickBooleanType MagickSetImageGravity(MagickWand *wand,
9851 const GravityType gravity)
9853 assert(wand != (MagickWand *) NULL);
9854 assert(wand->signature == MagickWandSignature);
9855 if (wand->debug != MagickFalse)
9856 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9857 if (wand->images == (Image *) NULL)
9858 ThrowWandException(WandError,"ContainsNoImages",wand->name);
9859 wand->images->gravity=gravity;
9864 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9868 % M a g i c k S e t I m a g e G r e e n P r i m a r y %
9872 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9874 % MagickSetImageGreenPrimary() sets the image chromaticity green primary
9877 % The format of the MagickSetImageGreenPrimary method is:
9879 % MagickBooleanType MagickSetImageGreenPrimary(MagickWand *wand,
9880 % const double x,const double y)
9882 % A description of each parameter follows:
9884 % o wand: the magick wand.
9886 % o x: the green primary x-point.
9888 % o y: the green primary y-point.
9892 WandExport MagickBooleanType MagickSetImageGreenPrimary(MagickWand *wand,
9893 const double x,const double y)
9895 assert(wand != (MagickWand *) NULL);
9896 assert(wand->signature == MagickWandSignature);
9897 if (wand->debug != MagickFalse)
9898 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9899 if (wand->images == (Image *) NULL)
9900 ThrowWandException(WandError,"ContainsNoImages",wand->name);
9901 wand->images->chromaticity.green_primary.x=x;
9902 wand->images->chromaticity.green_primary.y=y;
9907 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9911 % M a g i c k S e t I m a g e I n t e r l a c e S c h e m e %
9915 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9917 % MagickSetImageInterlaceScheme() sets the image interlace scheme.
9919 % The format of the MagickSetImageInterlaceScheme method is:
9921 % MagickBooleanType MagickSetImageInterlaceScheme(MagickWand *wand,
9922 % const InterlaceType interlace)
9924 % A description of each parameter follows:
9926 % o wand: the magick wand.
9928 % o interlace: the image interlace scheme: NoInterlace, LineInterlace,
9929 % PlaneInterlace, PartitionInterlace.
9932 WandExport MagickBooleanType MagickSetImageInterlaceScheme(MagickWand *wand,
9933 const InterlaceType interlace)
9935 assert(wand != (MagickWand *) NULL);
9936 assert(wand->signature == MagickWandSignature);
9937 if (wand->debug != MagickFalse)
9938 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9939 if (wand->images == (Image *) NULL)
9940 ThrowWandException(WandError,"ContainsNoImages",wand->name);
9941 wand->images->interlace=interlace;
9946 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9950 % M a g i c k S e t I m a g e I n t e r p o l a t e M e t h o d %
9954 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9956 % MagickSetImagePixelInterpolateMethod() sets the image interpolate pixel
9959 % The format of the MagickSetImagePixelInterpolateMethod method is:
9961 % MagickBooleanType MagickSetImagePixelInterpolateMethod(MagickWand *wand,
9962 % const PixelInterpolateMethod method)
9964 % A description of each parameter follows:
9966 % o wand: the magick wand.
9968 % o method: the image interpole pixel methods: choose from Undefined,
9969 % Average, Bicubic, Bilinear, Filter, Integer, Mesh, NearestNeighbor.
9972 WandExport MagickBooleanType MagickSetImagePixelInterpolateMethod(
9973 MagickWand *wand,const PixelInterpolateMethod method)
9975 assert(wand != (MagickWand *) NULL);
9976 assert(wand->signature == MagickWandSignature);
9977 if (wand->debug != MagickFalse)
9978 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
9979 if (wand->images == (Image *) NULL)
9980 ThrowWandException(WandError,"ContainsNoImages",wand->name);
9981 wand->images->interpolate=method;
9986 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9990 % M a g i c k S e t I m a g e I t e r a t i o n s %
9994 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9996 % MagickSetImageIterations() sets the image iterations.
9998 % The format of the MagickSetImageIterations method is:
10000 % MagickBooleanType MagickSetImageIterations(MagickWand *wand,
10001 % const size_t iterations)
10003 % A description of each parameter follows:
10005 % o wand: the magick wand.
10007 % o delay: the image delay in 1/100th of a second.
10010 WandExport MagickBooleanType MagickSetImageIterations(MagickWand *wand,
10011 const size_t iterations)
10013 assert(wand != (MagickWand *) NULL);
10014 assert(wand->signature == MagickWandSignature);
10015 if (wand->debug != MagickFalse)
10016 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
10017 if (wand->images == (Image *) NULL)
10018 ThrowWandException(WandError,"ContainsNoImages",wand->name);
10019 wand->images->iterations=iterations;
10020 return(MagickTrue);
10024 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10028 % M a g i c k S e t I m a g e M a t t e %
10032 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10034 % MagickSetImageMatte() sets the image matte channel.
10036 % The format of the MagickSetImageMatteColor method is:
10038 % MagickBooleanType MagickSetImageMatteColor(MagickWand *wand,
10039 % const MagickBooleanType *matte)
10041 % A description of each parameter follows:
10043 % o wand: the magick wand.
10045 % o matte: Set to MagickTrue to enable the image matte channel otherwise
10049 WandExport MagickBooleanType MagickSetImageMatte(MagickWand *wand,
10050 const MagickBooleanType matte)
10052 assert(wand != (MagickWand *) NULL);
10053 assert(wand->signature == MagickWandSignature);
10054 if (wand->debug != MagickFalse)
10055 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
10056 if (wand->images == (Image *) NULL)
10057 ThrowWandException(WandError,"ContainsNoImages",wand->name);
10058 if (matte == MagickFalse)
10059 wand->images->alpha_trait=UndefinedPixelTrait;
10062 if (wand->images->alpha_trait == UndefinedPixelTrait)
10063 (void) SetImageAlpha(wand->images,OpaqueAlpha,wand->exception);
10064 wand->images->alpha_trait=BlendPixelTrait;
10066 return(MagickTrue);
10070 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10074 % M a g i c k S e t I m a g e M a t t e C o l o r %
10078 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10080 % MagickSetImageMatteColor() sets the image matte color.
10082 % The format of the MagickSetImageMatteColor method is:
10084 % MagickBooleanType MagickSetImageMatteColor(MagickWand *wand,
10085 % const PixelWand *matte)
10087 % A description of each parameter follows:
10089 % o wand: the magick wand.
10091 % o matte: the matte pixel wand.
10094 WandExport MagickBooleanType MagickSetImageMatteColor(MagickWand *wand,
10095 const PixelWand *matte)
10097 assert(wand != (MagickWand *) NULL);
10098 assert(wand->signature == MagickWandSignature);
10099 if (wand->debug != MagickFalse)
10100 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
10101 if (wand->images == (Image *) NULL)
10102 ThrowWandException(WandError,"ContainsNoImages",wand->name);
10103 PixelGetQuantumPacket(matte,&wand->images->matte_color);
10104 return(MagickTrue);
10108 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10112 % M a g i c k S e t I m a g e O p a c i t y %
10116 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10118 % MagickSetImageAlpha() sets the image to the specified alpha level.
10120 % The format of the MagickSetImageAlpha method is:
10122 % MagickBooleanType MagickSetImageAlpha(MagickWand *wand,
10123 % const double alpha)
10125 % A description of each parameter follows:
10127 % o wand: the magick wand.
10129 % o alpha: the level of transparency: 1.0 is fully opaque and 0.0 is fully
10133 WandExport MagickBooleanType MagickSetImageAlpha(MagickWand *wand,
10134 const double alpha)
10139 assert(wand != (MagickWand *) NULL);
10140 assert(wand->signature == MagickWandSignature);
10141 if (wand->debug != MagickFalse)
10142 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
10143 if (wand->images == (Image *) NULL)
10144 ThrowWandException(WandError,"ContainsNoImages",wand->name);
10145 status=SetImageAlpha(wand->images,ClampToQuantum(QuantumRange*alpha),
10151 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10155 % M a g i c k S e t I m a g e O r i e n t a t i o n %
10159 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10161 % MagickSetImageOrientation() sets the image orientation.
10163 % The format of the MagickSetImageOrientation method is:
10165 % MagickBooleanType MagickSetImageOrientation(MagickWand *wand,
10166 % const OrientationType orientation)
10168 % A description of each parameter follows:
10170 % o wand: the magick wand.
10172 % o orientation: the image orientation type.
10175 WandExport MagickBooleanType MagickSetImageOrientation(MagickWand *wand,
10176 const OrientationType orientation)
10178 assert(wand != (MagickWand *) NULL);
10179 assert(wand->signature == MagickWandSignature);
10180 if (wand->debug != MagickFalse)
10181 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
10182 if (wand->images == (Image *) NULL)
10183 ThrowWandException(WandError,"ContainsNoImages",wand->name);
10184 wand->images->orientation=orientation;
10185 return(MagickTrue);
10189 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10193 % M a g i c k S e t I m a g e P a g e %
10197 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10199 % MagickSetImagePage() sets the page geometry of the image.
10201 % The format of the MagickSetImagePage method is:
10203 % MagickBooleanType MagickSetImagePage(MagickWand *wand,const size_t width,% const size_t height,const ssize_t x,const ssize_t y)
10205 % A description of each parameter follows:
10207 % o wand: the magick wand.
10209 % o width: the page width.
10211 % o height: the page height.
10213 % o x: the page x-offset.
10215 % o y: the page y-offset.
10218 WandExport MagickBooleanType MagickSetImagePage(MagickWand *wand,
10219 const size_t width,const size_t height,const ssize_t x,
10222 assert(wand != (MagickWand *) NULL);
10223 assert(wand->signature == MagickWandSignature);
10224 if (wand->debug != MagickFalse)
10225 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
10226 if (wand->images == (Image *) NULL)
10227 ThrowWandException(WandError,"ContainsNoImages",wand->name);
10228 wand->images->page.width=width;
10229 wand->images->page.height=height;
10230 wand->images->page.x=x;
10231 wand->images->page.y=y;
10232 return(MagickTrue);
10236 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10240 % M a g i c k S e t I m a g e P r o g r e s s M o n i t o r %
10244 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10246 % MagickSetImageProgressMonitor() sets the wand image progress monitor to the
10247 % specified method and returns the previous progress monitor if any. The
10248 % progress monitor method looks like this:
10250 % MagickBooleanType MagickProgressMonitor(const char *text,
10251 % const MagickOffsetType offset,const MagickSizeType span,
10252 % void *client_data)
10254 % If the progress monitor returns MagickFalse, the current operation is
10257 % The format of the MagickSetImageProgressMonitor method is:
10259 % MagickProgressMonitor MagickSetImageProgressMonitor(MagickWand *wand
10260 % const MagickProgressMonitor progress_monitor,void *client_data)
10262 % A description of each parameter follows:
10264 % o wand: the magick wand.
10266 % o progress_monitor: Specifies a pointer to a method to monitor progress
10267 % of an image operation.
10269 % o client_data: Specifies a pointer to any client data.
10272 WandExport MagickProgressMonitor MagickSetImageProgressMonitor(MagickWand *wand,
10273 const MagickProgressMonitor progress_monitor,void *client_data)
10275 MagickProgressMonitor
10278 assert(wand != (MagickWand *) NULL);
10279 assert(wand->signature == MagickWandSignature);
10280 if (wand->debug != MagickFalse)
10281 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
10282 if (wand->images == (Image *) NULL)
10284 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
10285 "ContainsNoImages","`%s'",wand->name);
10286 return((MagickProgressMonitor) NULL);
10288 previous_monitor=SetImageProgressMonitor(wand->images,
10289 progress_monitor,client_data);
10290 return(previous_monitor);
10294 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10298 % M a g i c k S e t I m a g e R e d P r i m a r y %
10302 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10304 % MagickSetImageRedPrimary() sets the image chromaticity red primary point.
10306 % The format of the MagickSetImageRedPrimary method is:
10308 % MagickBooleanType MagickSetImageRedPrimary(MagickWand *wand,
10309 % const double x,const double y)
10311 % A description of each parameter follows:
10313 % o wand: the magick wand.
10315 % o x: the red primary x-point.
10317 % o y: the red primary y-point.
10320 WandExport MagickBooleanType MagickSetImageRedPrimary(MagickWand *wand,
10321 const double x,const double y)
10323 assert(wand != (MagickWand *) NULL);
10324 assert(wand->signature == MagickWandSignature);
10325 if (wand->debug != MagickFalse)
10326 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
10327 if (wand->images == (Image *) NULL)
10328 ThrowWandException(WandError,"ContainsNoImages",wand->name);
10329 wand->images->chromaticity.red_primary.x=x;
10330 wand->images->chromaticity.red_primary.y=y;
10331 return(MagickTrue);
10335 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10339 % M a g i c k S e t I m a g e R e n d e r i n g I n t e n t %
10343 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10345 % MagickSetImageRenderingIntent() sets the image rendering intent.
10347 % The format of the MagickSetImageRenderingIntent method is:
10349 % MagickBooleanType MagickSetImageRenderingIntent(MagickWand *wand,
10350 % const RenderingIntent rendering_intent)
10352 % A description of each parameter follows:
10354 % o wand: the magick wand.
10356 % o rendering_intent: the image rendering intent: UndefinedIntent,
10357 % SaturationIntent, PerceptualIntent, AbsoluteIntent, or RelativeIntent.
10360 WandExport MagickBooleanType MagickSetImageRenderingIntent(MagickWand *wand,
10361 const RenderingIntent rendering_intent)
10363 assert(wand != (MagickWand *) NULL);
10364 assert(wand->signature == MagickWandSignature);
10365 if (wand->debug != MagickFalse)
10366 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
10367 if (wand->images == (Image *) NULL)
10368 ThrowWandException(WandError,"ContainsNoImages",wand->name);
10369 wand->images->rendering_intent=rendering_intent;
10370 return(MagickTrue);
10374 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10378 % M a g i c k S e t I m a g e R e s o l u t i o n %
10382 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10384 % MagickSetImageResolution() sets the image resolution.
10386 % The format of the MagickSetImageResolution method is:
10388 % MagickBooleanType MagickSetImageResolution(MagickWand *wand,
10389 % const double x_resolution,const double y_resolution)
10391 % A description of each parameter follows:
10393 % o wand: the magick wand.
10395 % o x_resolution: the image x resolution.
10397 % o y_resolution: the image y resolution.
10400 WandExport MagickBooleanType MagickSetImageResolution(MagickWand *wand,
10401 const double x_resolution,const double y_resolution)
10403 assert(wand != (MagickWand *) NULL);
10404 assert(wand->signature == MagickWandSignature);
10405 if (wand->debug != MagickFalse)
10406 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
10407 if (wand->images == (Image *) NULL)
10408 ThrowWandException(WandError,"ContainsNoImages",wand->name);
10409 wand->images->resolution.x=x_resolution;
10410 wand->images->resolution.y=y_resolution;
10411 return(MagickTrue);
10415 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10419 % M a g i c k S e t I m a g e S c e n e %
10423 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10425 % MagickSetImageScene() sets the image scene.
10427 % The format of the MagickSetImageScene method is:
10429 % MagickBooleanType MagickSetImageScene(MagickWand *wand,
10430 % const size_t scene)
10432 % A description of each parameter follows:
10434 % o wand: the magick wand.
10436 % o delay: the image scene number.
10439 WandExport MagickBooleanType MagickSetImageScene(MagickWand *wand,
10440 const size_t scene)
10442 assert(wand != (MagickWand *) NULL);
10443 assert(wand->signature == MagickWandSignature);
10444 if (wand->debug != MagickFalse)
10445 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
10446 if (wand->images == (Image *) NULL)
10447 ThrowWandException(WandError,"ContainsNoImages",wand->name);
10448 wand->images->scene=scene;
10449 return(MagickTrue);
10453 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10457 % M a g i c k S e t I m a g e T i c k s P e r S e c o n d %
10461 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10463 % MagickSetImageTicksPerSecond() sets the image ticks-per-second.
10465 % The format of the MagickSetImageTicksPerSecond method is:
10467 % MagickBooleanType MagickSetImageTicksPerSecond(MagickWand *wand,
10468 % const ssize_t ticks_per-second)
10470 % A description of each parameter follows:
10472 % o wand: the magick wand.
10474 % o ticks_per_second: the units to use for the image delay.
10477 WandExport MagickBooleanType MagickSetImageTicksPerSecond(MagickWand *wand,
10478 const ssize_t ticks_per_second)
10480 assert(wand != (MagickWand *) NULL);
10481 assert(wand->signature == MagickWandSignature);
10482 if (wand->debug != MagickFalse)
10483 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
10484 if (wand->images == (Image *) NULL)
10485 ThrowWandException(WandError,"ContainsNoImages",wand->name);
10486 wand->images->ticks_per_second=ticks_per_second;
10487 return(MagickTrue);
10491 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10495 % M a g i c k S e t I m a g e T y p e %
10499 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10501 % MagickSetImageType() sets the image type.
10503 % The format of the MagickSetImageType method is:
10505 % MagickBooleanType MagickSetImageType(MagickWand *wand,
10506 % const ImageType image_type)
10508 % A description of each parameter follows:
10510 % o wand: the magick wand.
10512 % o image_type: the image type: UndefinedType, BilevelType, GrayscaleType,
10513 % GrayscaleAlphaType, PaletteType, PaletteAlphaType, TrueColorType,
10514 % TrueColorAlphaType, ColorSeparationType, ColorSeparationAlphaType,
10518 WandExport MagickBooleanType MagickSetImageType(MagickWand *wand,
10519 const ImageType image_type)
10521 assert(wand != (MagickWand *) NULL);
10522 assert(wand->signature == MagickWandSignature);
10523 if (wand->debug != MagickFalse)
10524 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
10525 if (wand->images == (Image *) NULL)
10526 ThrowWandException(WandError,"ContainsNoImages",wand->name);
10527 return(SetImageType(wand->images,image_type,wand->exception));
10531 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10535 % M a g i c k S e t I m a g e U n i t s %
10539 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10541 % MagickSetImageUnits() sets the image units of resolution.
10543 % The format of the MagickSetImageUnits method is:
10545 % MagickBooleanType MagickSetImageUnits(MagickWand *wand,
10546 % const ResolutionType units)
10548 % A description of each parameter follows:
10550 % o wand: the magick wand.
10552 % o units: the image units of resolution : UndefinedResolution,
10553 % PixelsPerInchResolution, or PixelsPerCentimeterResolution.
10556 WandExport MagickBooleanType MagickSetImageUnits(MagickWand *wand,
10557 const ResolutionType units)
10559 assert(wand != (MagickWand *) NULL);
10560 assert(wand->signature == MagickWandSignature);
10561 if (wand->debug != MagickFalse)
10562 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
10563 if (wand->images == (Image *) NULL)
10564 ThrowWandException(WandError,"ContainsNoImages",wand->name);
10565 wand->images->units=units;
10566 return(MagickTrue);
10570 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10574 % M a g i c k S e t I m a g e V i r t u a l P i x e l M e t h o d %
10578 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10580 % MagickSetImageVirtualPixelMethod() sets the image virtual pixel method.
10582 % The format of the MagickSetImageVirtualPixelMethod method is:
10584 % VirtualPixelMethod MagickSetImageVirtualPixelMethod(MagickWand *wand,
10585 % const VirtualPixelMethod method)
10587 % A description of each parameter follows:
10589 % o wand: the magick wand.
10591 % o method: the image virtual pixel method : UndefinedVirtualPixelMethod,
10592 % ConstantVirtualPixelMethod, EdgeVirtualPixelMethod,
10593 % MirrorVirtualPixelMethod, or TileVirtualPixelMethod.
10596 WandExport VirtualPixelMethod MagickSetImageVirtualPixelMethod(MagickWand *wand,
10597 const VirtualPixelMethod method)
10599 assert(wand != (MagickWand *) NULL);
10600 assert(wand->signature == MagickWandSignature);
10601 if (wand->debug != MagickFalse)
10602 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
10603 if (wand->images == (Image *) NULL)
10604 return(UndefinedVirtualPixelMethod);
10605 return(SetImageVirtualPixelMethod(wand->images,method,wand->exception));
10609 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10613 % M a g i c k S e t I m a g e W h i t e P o i n t %
10617 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10619 % MagickSetImageWhitePoint() sets the image chromaticity white point.
10621 % The format of the MagickSetImageWhitePoint method is:
10623 % MagickBooleanType MagickSetImageWhitePoint(MagickWand *wand,
10624 % const double x,const double y)
10626 % A description of each parameter follows:
10628 % o wand: the magick wand.
10630 % o x: the white x-point.
10632 % o y: the white y-point.
10635 WandExport MagickBooleanType MagickSetImageWhitePoint(MagickWand *wand,
10636 const double x,const double y)
10638 assert(wand != (MagickWand *) NULL);
10639 assert(wand->signature == MagickWandSignature);
10640 if (wand->debug != MagickFalse)
10641 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
10642 if (wand->images == (Image *) NULL)
10643 ThrowWandException(WandError,"ContainsNoImages",wand->name);
10644 wand->images->chromaticity.white_point.x=x;
10645 wand->images->chromaticity.white_point.y=y;
10646 return(MagickTrue);
10650 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10654 % M a g i c k S h a d e I m a g e C h a n n e l %
10658 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10660 % MagickShadeImage() shines a distant light on an image to create a
10661 % three-dimensional effect. You control the positioning of the light with
10662 % azimuth and elevation; azimuth is measured in degrees off the x axis
10663 % and elevation is measured in pixels above the Z axis.
10665 % The format of the MagickShadeImage method is:
10667 % MagickBooleanType MagickShadeImage(MagickWand *wand,
10668 % const MagickBooleanType gray,const double azimuth,
10669 % const double elevation)
10671 % A description of each parameter follows:
10673 % o wand: the magick wand.
10675 % o gray: A value other than zero shades the intensity of each pixel.
10677 % o azimuth, elevation: Define the light source direction.
10680 WandExport MagickBooleanType MagickShadeImage(MagickWand *wand,
10681 const MagickBooleanType gray,const double asimuth,const double elevation)
10686 assert(wand != (MagickWand *) NULL);
10687 assert(wand->signature == MagickWandSignature);
10688 if (wand->debug != MagickFalse)
10689 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
10690 if (wand->images == (Image *) NULL)
10691 ThrowWandException(WandError,"ContainsNoImages",wand->name);
10692 shade_image=ShadeImage(wand->images,gray,asimuth,elevation,wand->exception);
10693 if (shade_image == (Image *) NULL)
10694 return(MagickFalse);
10695 ReplaceImageInList(&wand->images,shade_image);
10696 return(MagickTrue);
10700 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10704 % M a g i c k S h a d o w I m a g e %
10708 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10710 % MagickShadowImage() simulates an image shadow.
10712 % The format of the MagickShadowImage method is:
10714 % MagickBooleanType MagickShadowImage(MagickWand *wand,const double alpha,
10715 % const double sigma,const ssize_t x,const ssize_t y)
10717 % A description of each parameter follows:
10719 % o wand: the magick wand.
10721 % o alpha: percentage transparency.
10723 % o sigma: the standard deviation of the Gaussian, in pixels.
10725 % o x: the shadow x-offset.
10727 % o y: the shadow y-offset.
10730 WandExport MagickBooleanType MagickShadowImage(MagickWand *wand,
10731 const double alpha,const double sigma,const ssize_t x,const ssize_t y)
10736 assert(wand != (MagickWand *) NULL);
10737 assert(wand->signature == MagickWandSignature);
10738 if (wand->debug != MagickFalse)
10739 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
10740 if (wand->images == (Image *) NULL)
10741 ThrowWandException(WandError,"ContainsNoImages",wand->name);
10742 shadow_image=ShadowImage(wand->images,alpha,sigma,x,y,wand->exception);
10743 if (shadow_image == (Image *) NULL)
10744 return(MagickFalse);
10745 ReplaceImageInList(&wand->images,shadow_image);
10746 return(MagickTrue);
10750 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10754 % M a g i c k S h a r p e n I m a g e %
10758 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10760 % MagickSharpenImage() sharpens an image. We convolve the image with a
10761 % Gaussian operator of the given radius and standard deviation (sigma).
10762 % For reasonable results, the radius should be larger than sigma. Use a
10763 % radius of 0 and MagickSharpenImage() selects a suitable radius for you.
10765 % The format of the MagickSharpenImage method is:
10767 % MagickBooleanType MagickSharpenImage(MagickWand *wand,
10768 % const double radius,const double sigma)
10770 % A description of each parameter follows:
10772 % o wand: the magick wand.
10774 % o radius: the radius of the Gaussian, in pixels, not counting the center
10777 % o sigma: the standard deviation of the Gaussian, in pixels.
10780 WandExport MagickBooleanType MagickSharpenImage(MagickWand *wand,
10781 const double radius,const double sigma)
10786 assert(wand != (MagickWand *) NULL);
10787 assert(wand->signature == MagickWandSignature);
10788 if (wand->debug != MagickFalse)
10789 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
10790 if (wand->images == (Image *) NULL)
10791 ThrowWandException(WandError,"ContainsNoImages",wand->name);
10792 sharp_image=SharpenImage(wand->images,radius,sigma,wand->exception);
10793 if (sharp_image == (Image *) NULL)
10794 return(MagickFalse);
10795 ReplaceImageInList(&wand->images,sharp_image);
10796 return(MagickTrue);
10800 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10804 % M a g i c k S h a v e I m a g e %
10808 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10810 % MagickShaveImage() shaves pixels from the image edges. It allocates the
10811 % memory necessary for the new Image structure and returns a pointer to the
10814 % The format of the MagickShaveImage method is:
10816 % MagickBooleanType MagickShaveImage(MagickWand *wand,
10817 % const size_t columns,const size_t rows)
10819 % A description of each parameter follows:
10821 % o wand: the magick wand.
10823 % o columns: the number of columns in the scaled image.
10825 % o rows: the number of rows in the scaled image.
10829 WandExport MagickBooleanType MagickShaveImage(MagickWand *wand,
10830 const size_t columns,const size_t rows)
10838 assert(wand != (MagickWand *) NULL);
10839 assert(wand->signature == MagickWandSignature);
10840 if (wand->debug != MagickFalse)
10841 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
10842 if (wand->images == (Image *) NULL)
10843 ThrowWandException(WandError,"ContainsNoImages",wand->name);
10844 shave_info.width=columns;
10845 shave_info.height=rows;
10848 shave_image=ShaveImage(wand->images,&shave_info,wand->exception);
10849 if (shave_image == (Image *) NULL)
10850 return(MagickFalse);
10851 ReplaceImageInList(&wand->images,shave_image);
10852 return(MagickTrue);
10856 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10860 % M a g i c k S h e a r I m a g e %
10864 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10866 % MagickShearImage() slides one edge of an image along the X or Y axis,
10867 % creating a parallelogram. An X direction shear slides an edge along the X
10868 % axis, while a Y direction shear slides an edge along the Y axis. The amount
10869 % of the shear is controlled by a shear angle. For X direction shears, x_shear
10870 % is measured relative to the Y axis, and similarly, for Y direction shears
10871 % y_shear is measured relative to the X axis. Empty triangles left over from
10872 % shearing the image are filled with the background color.
10874 % The format of the MagickShearImage method is:
10876 % MagickBooleanType MagickShearImage(MagickWand *wand,
10877 % const PixelWand *background,const double x_shear,const double y_shear)
10879 % A description of each parameter follows:
10881 % o wand: the magick wand.
10883 % o background: the background pixel wand.
10885 % o x_shear: the number of degrees to shear the image.
10887 % o y_shear: the number of degrees to shear the image.
10890 WandExport MagickBooleanType MagickShearImage(MagickWand *wand,
10891 const PixelWand *background,const double x_shear,const double y_shear)
10896 assert(wand != (MagickWand *) NULL);
10897 assert(wand->signature == MagickWandSignature);
10898 if (wand->debug != MagickFalse)
10899 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
10900 if (wand->images == (Image *) NULL)
10901 ThrowWandException(WandError,"ContainsNoImages",wand->name);
10902 PixelGetQuantumPacket(background,&wand->images->background_color);
10903 shear_image=ShearImage(wand->images,x_shear,y_shear,wand->exception);
10904 if (shear_image == (Image *) NULL)
10905 return(MagickFalse);
10906 ReplaceImageInList(&wand->images,shear_image);
10907 return(MagickTrue);
10911 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10915 % M a g i c k S i g m o i d a l C o n t r a s t I m a g e %
10919 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10921 % MagickSigmoidalContrastImage() adjusts the contrast of an image with a
10922 % non-linear sigmoidal contrast algorithm. Increase the contrast of the
10923 % image using a sigmoidal transfer function without saturating highlights or
10924 % shadows. Contrast indicates how much to increase the contrast (0 is none;
10925 % 3 is typical; 20 is pushing it); mid-point indicates where midtones fall in
10926 % the resultant image (0 is white; 50% is middle-gray; 100% is black). Set
10927 % sharpen to MagickTrue to increase the image contrast otherwise the contrast
10930 % The format of the MagickSigmoidalContrastImage method is:
10932 % MagickBooleanType MagickSigmoidalContrastImage(MagickWand *wand,
10933 % const MagickBooleanType sharpen,const double alpha,const double beta)
10935 % A description of each parameter follows:
10937 % o wand: the magick wand.
10939 % o sharpen: Increase or decrease image contrast.
10941 % o alpha: strength of the contrast, the larger the number the more
10942 % 'threshold-like' it becomes.
10944 % o beta: midpoint of the function as a color value 0 to QuantumRange.
10947 WandExport MagickBooleanType MagickSigmoidalContrastImage(
10948 MagickWand *wand,const MagickBooleanType sharpen,const double alpha,
10954 assert(wand != (MagickWand *) NULL);
10955 assert(wand->signature == MagickWandSignature);
10956 if (wand->debug != MagickFalse)
10957 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
10958 if (wand->images == (Image *) NULL)
10959 ThrowWandException(WandError,"ContainsNoImages",wand->name);
10960 status=SigmoidalContrastImage(wand->images,sharpen,alpha,beta,
10966 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10970 % M a g i c k S i m i l a r i t y I m a g e %
10974 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10976 % MagickSimilarityImage() compares the reference image of the image and
10977 % returns the best match offset. In addition, it returns a similarity image
10978 % such that an exact match location is completely white and if none of the
10979 % pixels match, black, otherwise some gray level in-between.
10981 % The format of the MagickSimilarityImage method is:
10983 % MagickWand *MagickSimilarityImage(MagickWand *wand,
10984 % const MagickWand *reference,const MetricType metric,
10985 % const double similarity_threshold,RectangeInfo *offset,
10986 % double *similarity)
10988 % A description of each parameter follows:
10990 % o wand: the magick wand.
10992 % o reference: the reference wand.
10994 % o metric: the metric.
10996 % o similarity_threshold: minimum distortion for (sub)image match.
10998 % o offset: the best match offset of the reference image within the image.
11000 % o similarity: the computed similarity between the images.
11003 WandExport MagickWand *MagickSimilarityImage(MagickWand *wand,
11004 const MagickWand *reference,const MetricType metric,
11005 const double similarity_threshold,RectangleInfo *offset,double *similarity)
11010 assert(wand != (MagickWand *) NULL);
11011 assert(wand->signature == MagickWandSignature);
11012 if (wand->debug != MagickFalse)
11013 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
11014 if ((wand->images == (Image *) NULL) || (reference->images == (Image *) NULL))
11016 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
11017 "ContainsNoImages","`%s'",wand->name);
11018 return((MagickWand *) NULL);
11020 similarity_image=SimilarityImage(wand->images,reference->images,metric,
11021 similarity_threshold,offset,similarity,wand->exception);
11022 if (similarity_image == (Image *) NULL)
11023 return((MagickWand *) NULL);
11024 return(CloneMagickWandFromImages(wand,similarity_image));
11028 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11032 % M a g i c k S k e t c h I m a g e %
11036 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11038 % MagickSketchImage() simulates a pencil sketch. We convolve the image with
11039 % a Gaussian operator of the given radius and standard deviation (sigma).
11040 % For reasonable results, radius should be larger than sigma. Use a
11041 % radius of 0 and SketchImage() selects a suitable radius for you.
11042 % Angle gives the angle of the blurring motion.
11044 % The format of the MagickSketchImage method is:
11046 % MagickBooleanType MagickSketchImage(MagickWand *wand,
11047 % const double radius,const double sigma,const double angle)
11049 % A description of each parameter follows:
11051 % o wand: the magick wand.
11053 % o radius: the radius of the Gaussian, in pixels, not counting
11054 % the center pixel.
11056 % o sigma: the standard deviation of the Gaussian, in pixels.
11058 % o angle: apply the effect along this angle.
11061 WandExport MagickBooleanType MagickSketchImage(MagickWand *wand,
11062 const double radius,const double sigma,const double angle)
11067 assert(wand != (MagickWand *) NULL);
11068 assert(wand->signature == MagickWandSignature);
11069 if (wand->debug != MagickFalse)
11070 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
11071 if (wand->images == (Image *) NULL)
11072 ThrowWandException(WandError,"ContainsNoImages",wand->name);
11073 sketch_image=SketchImage(wand->images,radius,sigma,angle,wand->exception);
11074 if (sketch_image == (Image *) NULL)
11075 return(MagickFalse);
11076 ReplaceImageInList(&wand->images,sketch_image);
11077 return(MagickTrue);
11081 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11085 % M a g i c k S m u s h I m a g e s %
11089 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11091 % MagickSmushImages() takes all images from the current image pointer to the
11092 % end of the image list and smushs them to each other top-to-bottom if the
11093 % stack parameter is true, otherwise left-to-right.
11095 % The format of the MagickSmushImages method is:
11097 % MagickWand *MagickSmushImages(MagickWand *wand,
11098 % const MagickBooleanType stack,const ssize_t offset)
11100 % A description of each parameter follows:
11102 % o wand: the magick wand.
11104 % o stack: By default, images are stacked left-to-right. Set stack to
11105 % MagickTrue to stack them top-to-bottom.
11107 % o offset: minimum distance in pixels between images.
11110 WandExport MagickWand *MagickSmushImages(MagickWand *wand,
11111 const MagickBooleanType stack,const ssize_t offset)
11116 assert(wand != (MagickWand *) NULL);
11117 assert(wand->signature == MagickWandSignature);
11118 if (wand->debug != MagickFalse)
11119 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
11120 if (wand->images == (Image *) NULL)
11121 return((MagickWand *) NULL);
11122 smush_image=SmushImages(wand->images,stack,offset,wand->exception);
11123 if (smush_image == (Image *) NULL)
11124 return((MagickWand *) NULL);
11125 return(CloneMagickWandFromImages(wand,smush_image));
11129 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11133 % M a g i c k S o l a r i z e I m a g e %
11137 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11139 % MagickSolarizeImage() applies a special effect to the image, similar to the
11140 % effect achieved in a photo darkroom by selectively exposing areas of photo
11141 % sensitive paper to light. Threshold ranges from 0 to QuantumRange and is a
11142 % measure of the extent of the solarization.
11144 % The format of the MagickSolarizeImage method is:
11146 % MagickBooleanType MagickSolarizeImage(MagickWand *wand,
11147 % const double threshold)
11149 % A description of each parameter follows:
11151 % o wand: the magick wand.
11153 % o threshold: Define the extent of the solarization.
11156 WandExport MagickBooleanType MagickSolarizeImage(MagickWand *wand,
11157 const double threshold)
11162 assert(wand != (MagickWand *) NULL);
11163 assert(wand->signature == MagickWandSignature);
11164 if (wand->debug != MagickFalse)
11165 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
11166 if (wand->images == (Image *) NULL)
11167 ThrowWandException(WandError,"ContainsNoImages",wand->name);
11168 status=SolarizeImage(wand->images,threshold,wand->exception);
11173 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11177 % M a g i c k S p a r s e C o l o r I m a g e %
11181 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11183 % MagickSparseColorImage(), given a set of coordinates, interpolates the
11184 % colors found at those coordinates, across the whole image, using various
11187 % The format of the MagickSparseColorImage method is:
11189 % MagickBooleanType MagickSparseColorImage(MagickWand *wand,
11190 % const SparseColorMethod method,const size_t number_arguments,
11191 % const double *arguments)
11193 % A description of each parameter follows:
11195 % o image: the image to be sparseed.
11197 % o method: the method of image sparseion.
11199 % ArcSparseColorion will always ignore source image offset, and always
11200 % 'bestfit' the destination image with the top left corner offset
11201 % relative to the polar mapping center.
11203 % Bilinear has no simple inverse mapping so will not allow 'bestfit'
11204 % style of image sparseion.
11206 % Affine, Perspective, and Bilinear, will do least squares fitting of
11207 % the distrotion when more than the minimum number of control point
11208 % pairs are provided.
11210 % Perspective, and Bilinear, will fall back to a Affine sparseion when
11211 % less than 4 control point pairs are provided. While Affine sparseions
11212 % will let you use any number of control point pairs, that is Zero pairs
11213 % is a No-Op (viewport only) distrotion, one pair is a translation and
11214 % two pairs of control points will do a scale-rotate-translate, without
11217 % o number_arguments: the number of arguments given for this sparseion
11220 % o arguments: the arguments for this sparseion method.
11223 WandExport MagickBooleanType MagickSparseColorImage(MagickWand *wand,
11224 const SparseColorMethod method,const size_t number_arguments,
11225 const double *arguments)
11230 assert(wand != (MagickWand *) NULL);
11231 assert(wand->signature == MagickWandSignature);
11232 if (wand->debug != MagickFalse)
11233 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
11234 if (wand->images == (Image *) NULL)
11235 ThrowWandException(WandError,"ContainsNoImages",wand->name);
11236 sparse_image=SparseColorImage(wand->images,method,number_arguments,arguments,
11238 if (sparse_image == (Image *) NULL)
11239 return(MagickFalse);
11240 ReplaceImageInList(&wand->images,sparse_image);
11241 return(MagickTrue);
11245 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11249 % M a g i c k S p l i c e I m a g e %
11253 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11255 % MagickSpliceImage() splices a solid color into the image.
11257 % The format of the MagickSpliceImage method is:
11259 % MagickBooleanType MagickSpliceImage(MagickWand *wand,
11260 % const size_t width,const size_t height,const ssize_t x,
11263 % A description of each parameter follows:
11265 % o wand: the magick wand.
11267 % o width: the region width.
11269 % o height: the region height.
11271 % o x: the region x offset.
11273 % o y: the region y offset.
11276 WandExport MagickBooleanType MagickSpliceImage(MagickWand *wand,
11277 const size_t width,const size_t height,const ssize_t x,
11286 assert(wand != (MagickWand *) NULL);
11287 assert(wand->signature == MagickWandSignature);
11288 if (wand->debug != MagickFalse)
11289 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
11290 if (wand->images == (Image *) NULL)
11291 ThrowWandException(WandError,"ContainsNoImages",wand->name);
11292 splice.width=width;
11293 splice.height=height;
11296 splice_image=SpliceImage(wand->images,&splice,wand->exception);
11297 if (splice_image == (Image *) NULL)
11298 return(MagickFalse);
11299 ReplaceImageInList(&wand->images,splice_image);
11300 return(MagickTrue);
11304 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11308 % M a g i c k S p r e a d I m a g e %
11312 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11314 % MagickSpreadImage() is a special effects method that randomly displaces each
11315 % pixel in a block defined by the radius parameter.
11317 % The format of the MagickSpreadImage method is:
11319 % MagickBooleanType MagickSpreadImage(MagickWand *wand,
11320 % const PixelInterpolateMethod method,const double radius)
11322 % A description of each parameter follows:
11324 % o wand: the magick wand.
11326 % o method: intepolation method.
11328 % o radius: Choose a random pixel in a neighborhood of this extent.
11331 WandExport MagickBooleanType MagickSpreadImage(MagickWand *wand,
11332 const PixelInterpolateMethod method,const double radius)
11337 assert(wand != (MagickWand *) NULL);
11338 assert(wand->signature == MagickWandSignature);
11339 if (wand->debug != MagickFalse)
11340 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
11341 if (wand->images == (Image *) NULL)
11342 ThrowWandException(WandError,"ContainsNoImages",wand->name);
11343 spread_image=SpreadImage(wand->images,method,radius,wand->exception);
11344 if (spread_image == (Image *) NULL)
11345 return(MagickFalse);
11346 ReplaceImageInList(&wand->images,spread_image);
11347 return(MagickTrue);
11351 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11355 % M a g i c k S t a t i s t i c I m a g e %
11359 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11361 % MagickStatisticImage() replace each pixel with corresponding statistic from
11362 % the neighborhood of the specified width and height.
11364 % The format of the MagickStatisticImage method is:
11366 % MagickBooleanType MagickStatisticImage(MagickWand *wand,
11367 % const StatisticType type,const double width,const size_t height)
11369 % A description of each parameter follows:
11371 % o wand: the magick wand.
11373 % o type: the statistic type (e.g. median, mode, etc.).
11375 % o width: the width of the pixel neighborhood.
11377 % o height: the height of the pixel neighborhood.
11380 WandExport MagickBooleanType MagickStatisticImage(MagickWand *wand,
11381 const StatisticType type,const size_t width,const size_t height)
11386 assert(wand != (MagickWand *) NULL);
11387 assert(wand->signature == MagickWandSignature);
11388 if (wand->debug != MagickFalse)
11389 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
11390 if (wand->images == (Image *) NULL)
11391 ThrowWandException(WandError,"ContainsNoImages",wand->name);
11392 statistic_image=StatisticImage(wand->images,type,width,height,
11394 if (statistic_image == (Image *) NULL)
11395 return(MagickFalse);
11396 ReplaceImageInList(&wand->images,statistic_image);
11397 return(MagickTrue);
11401 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11405 % M a g i c k S t e g a n o I m a g e %
11409 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11411 % MagickSteganoImage() hides a digital watermark within the image.
11412 % Recover the hidden watermark later to prove that the authenticity of
11413 % an image. Offset defines the start position within the image to hide
11416 % The format of the MagickSteganoImage method is:
11418 % MagickWand *MagickSteganoImage(MagickWand *wand,
11419 % const MagickWand *watermark_wand,const ssize_t offset)
11421 % A description of each parameter follows:
11423 % o wand: the magick wand.
11425 % o watermark_wand: the watermark wand.
11427 % o offset: Start hiding at this offset into the image.
11430 WandExport MagickWand *MagickSteganoImage(MagickWand *wand,
11431 const MagickWand *watermark_wand,const ssize_t offset)
11436 assert(wand != (MagickWand *) NULL);
11437 assert(wand->signature == MagickWandSignature);
11438 if (wand->debug != MagickFalse)
11439 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
11440 if ((wand->images == (Image *) NULL) ||
11441 (watermark_wand->images == (Image *) NULL))
11443 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
11444 "ContainsNoImages","`%s'",wand->name);
11445 return((MagickWand *) NULL);
11447 wand->images->offset=offset;
11448 stegano_image=SteganoImage(wand->images,watermark_wand->images,
11450 if (stegano_image == (Image *) NULL)
11451 return((MagickWand *) NULL);
11452 return(CloneMagickWandFromImages(wand,stegano_image));
11456 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11460 % M a g i c k S t e r e o I m a g e %
11464 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11466 % MagickStereoImage() composites two images and produces a single image that
11467 % is the composite of a left and right image of a stereo pair
11469 % The format of the MagickStereoImage method is:
11471 % MagickWand *MagickStereoImage(MagickWand *wand,
11472 % const MagickWand *offset_wand)
11474 % A description of each parameter follows:
11476 % o wand: the magick wand.
11478 % o offset_wand: Another image wand.
11481 WandExport MagickWand *MagickStereoImage(MagickWand *wand,
11482 const MagickWand *offset_wand)
11487 assert(wand != (MagickWand *) NULL);
11488 assert(wand->signature == MagickWandSignature);
11489 if (wand->debug != MagickFalse)
11490 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
11491 if ((wand->images == (Image *) NULL) ||
11492 (offset_wand->images == (Image *) NULL))
11494 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
11495 "ContainsNoImages","`%s'",wand->name);
11496 return((MagickWand *) NULL);
11498 stereo_image=StereoImage(wand->images,offset_wand->images,wand->exception);
11499 if (stereo_image == (Image *) NULL)
11500 return((MagickWand *) NULL);
11501 return(CloneMagickWandFromImages(wand,stereo_image));
11505 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11509 % M a g i c k S t r i p I m a g e %
11513 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11515 % MagickStripImage() strips an image of all profiles and comments.
11517 % The format of the MagickStripImage method is:
11519 % MagickBooleanType MagickStripImage(MagickWand *wand)
11521 % A description of each parameter follows:
11523 % o wand: the magick wand.
11526 WandExport MagickBooleanType MagickStripImage(MagickWand *wand)
11528 assert(wand != (MagickWand *) NULL);
11529 assert(wand->signature == MagickWandSignature);
11530 if (wand->debug != MagickFalse)
11531 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
11532 if (wand->images == (Image *) NULL)
11533 ThrowWandException(WandError,"ContainsNoImages",wand->name);
11534 return(StripImage(wand->images,wand->exception));
11538 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11542 % M a g i c k S w i r l I m a g e %
11546 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11548 % MagickSwirlImage() swirls the pixels about the center of the image, where
11549 % degrees indicates the sweep of the arc through which each pixel is moved.
11550 % You get a more dramatic effect as the degrees move from 1 to 360.
11552 % The format of the MagickSwirlImage method is:
11554 % MagickBooleanType MagickSwirlImage(MagickWand *wand,const double degrees,
11555 % const PixelInterpolateMethod method)
11557 % A description of each parameter follows:
11559 % o wand: the magick wand.
11561 % o degrees: Define the tightness of the swirling effect.
11563 % o method: the pixel interpolation method.
11566 WandExport MagickBooleanType MagickSwirlImage(MagickWand *wand,
11567 const double degrees,const PixelInterpolateMethod method)
11572 assert(wand != (MagickWand *) NULL);
11573 assert(wand->signature == MagickWandSignature);
11574 if (wand->debug != MagickFalse)
11575 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
11576 if (wand->images == (Image *) NULL)
11577 ThrowWandException(WandError,"ContainsNoImages",wand->name);
11578 swirl_image=SwirlImage(wand->images,degrees,method,wand->exception);
11579 if (swirl_image == (Image *) NULL)
11580 return(MagickFalse);
11581 ReplaceImageInList(&wand->images,swirl_image);
11582 return(MagickTrue);
11586 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11590 % M a g i c k T e x t u r e I m a g e %
11594 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11596 % MagickTextureImage() repeatedly tiles the texture image across and down the
11599 % The format of the MagickTextureImage method is:
11601 % MagickWand *MagickTextureImage(MagickWand *wand,
11602 % const MagickWand *texture_wand)
11604 % A description of each parameter follows:
11606 % o wand: the magick wand.
11608 % o texture_wand: the texture wand
11611 WandExport MagickWand *MagickTextureImage(MagickWand *wand,
11612 const MagickWand *texture_wand)
11620 assert(wand != (MagickWand *) NULL);
11621 assert(wand->signature == MagickWandSignature);
11622 if (wand->debug != MagickFalse)
11623 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
11624 if ((wand->images == (Image *) NULL) ||
11625 (texture_wand->images == (Image *) NULL))
11627 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
11628 "ContainsNoImages","`%s'",wand->name);
11629 return((MagickWand *) NULL);
11631 texture_image=CloneImage(wand->images,0,0,MagickTrue,wand->exception);
11632 if (texture_image == (Image *) NULL)
11633 return((MagickWand *) NULL);
11634 status=TextureImage(texture_image,texture_wand->images,wand->exception);
11635 if (status == MagickFalse)
11637 texture_image=DestroyImage(texture_image);
11638 return((MagickWand *) NULL);
11640 return(CloneMagickWandFromImages(wand,texture_image));
11644 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11648 % M a g i c k T h r e s h o l d I m a g e %
11652 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11654 % MagickThresholdImage() changes the value of individual pixels based on
11655 % the intensity of each pixel compared to threshold. The result is a
11656 % high-contrast, two color image.
11658 % The format of the MagickThresholdImage method is:
11660 % MagickBooleanType MagickThresholdImage(MagickWand *wand,
11661 % const double threshold)
11662 % MagickBooleanType MagickThresholdImageChannel(MagickWand *wand,
11663 % const ChannelType channel,const double threshold)
11665 % A description of each parameter follows:
11667 % o wand: the magick wand.
11669 % o channel: the image channel(s).
11671 % o threshold: Define the threshold value.
11674 WandExport MagickBooleanType MagickThresholdImage(MagickWand *wand,
11675 const double threshold)
11680 status=MagickThresholdImageChannel(wand,DefaultChannels,threshold);
11684 WandExport MagickBooleanType MagickThresholdImageChannel(MagickWand *wand,
11685 const ChannelType channel,const double threshold)
11690 assert(wand != (MagickWand *) NULL);
11691 assert(wand->signature == MagickWandSignature);
11692 if (wand->debug != MagickFalse)
11693 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
11694 if (wand->images == (Image *) NULL)
11695 ThrowWandException(WandError,"ContainsNoImages",wand->name);
11696 status=BilevelImage(wand->images,threshold,wand->exception);
11701 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11705 % M a g i c k T h u m b n a i l I m a g e %
11709 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11711 % MagickThumbnailImage() changes the size of an image to the given dimensions
11712 % and removes any associated profiles. The goal is to produce small low cost
11713 % thumbnail images suited for display on the Web.
11715 % The format of the MagickThumbnailImage method is:
11717 % MagickBooleanType MagickThumbnailImage(MagickWand *wand,
11718 % const size_t columns,const size_t rows)
11720 % A description of each parameter follows:
11722 % o wand: the magick wand.
11724 % o columns: the number of columns in the scaled image.
11726 % o rows: the number of rows in the scaled image.
11729 WandExport MagickBooleanType MagickThumbnailImage(MagickWand *wand,
11730 const size_t columns,const size_t rows)
11735 assert(wand != (MagickWand *) NULL);
11736 assert(wand->signature == MagickWandSignature);
11737 if (wand->debug != MagickFalse)
11738 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
11739 if (wand->images == (Image *) NULL)
11740 ThrowWandException(WandError,"ContainsNoImages",wand->name);
11741 thumbnail_image=ThumbnailImage(wand->images,columns,rows,wand->exception);
11742 if (thumbnail_image == (Image *) NULL)
11743 return(MagickFalse);
11744 ReplaceImageInList(&wand->images,thumbnail_image);
11745 return(MagickTrue);
11749 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11753 % M a g i c k T i n t I m a g e %
11757 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11759 % MagickTintImage() applies a color vector to each pixel in the image. The
11760 % length of the vector is 0 for black and white and at its maximum for the
11761 % midtones. The vector weighting function is
11762 % f(x)=(1-(4.0*((x-0.5)*(x-0.5)))).
11764 % The format of the MagickTintImage method is:
11766 % MagickBooleanType MagickTintImage(MagickWand *wand,
11767 % const PixelWand *tint,const PixelWand *blend)
11769 % A description of each parameter follows:
11771 % o wand: the magick wand.
11773 % o tint: the tint pixel wand.
11775 % o alpha: the alpha pixel wand.
11778 WandExport MagickBooleanType MagickTintImage(MagickWand *wand,
11779 const PixelWand *tint,const PixelWand *blend)
11782 percent_blend[MagickPathExtent];
11790 assert(wand != (MagickWand *) NULL);
11791 assert(wand->signature == MagickWandSignature);
11792 if (wand->debug != MagickFalse)
11793 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
11794 if (wand->images == (Image *) NULL)
11795 ThrowWandException(WandError,"ContainsNoImages",wand->name);
11796 if (wand->images->colorspace != CMYKColorspace)
11797 (void) FormatLocaleString(percent_blend,MagickPathExtent,
11798 "%g,%g,%g,%g",(double) (100.0*QuantumScale*
11799 PixelGetRedQuantum(blend)),(double) (100.0*QuantumScale*
11800 PixelGetGreenQuantum(blend)),(double) (100.0*QuantumScale*
11801 PixelGetBlueQuantum(blend)),(double) (100.0*QuantumScale*
11802 PixelGetAlphaQuantum(blend)));
11804 (void) FormatLocaleString(percent_blend,MagickPathExtent,
11805 "%g,%g,%g,%g,%g",(double) (100.0*QuantumScale*
11806 PixelGetCyanQuantum(blend)),(double) (100.0*QuantumScale*
11807 PixelGetMagentaQuantum(blend)),(double) (100.0*QuantumScale*
11808 PixelGetYellowQuantum(blend)),(double) (100.0*QuantumScale*
11809 PixelGetBlackQuantum(blend)),(double) (100.0*QuantumScale*
11810 PixelGetAlphaQuantum(blend)));
11811 target=PixelGetPixel(tint);
11812 tint_image=TintImage(wand->images,percent_blend,&target,wand->exception);
11813 if (tint_image == (Image *) NULL)
11814 return(MagickFalse);
11815 ReplaceImageInList(&wand->images,tint_image);
11816 return(MagickTrue);
11820 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11824 % M a g i c k T r a n s f o r m I m a g e %
11828 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11830 % MagickTransformImage() is a convenience method that behaves like
11831 % MagickResizeImage() or MagickCropImage() but accepts scaling and/or cropping
11832 % information as a region geometry specification. If the operation fails,
11833 % a NULL image handle is returned.
11835 % The format of the MagickTransformImage method is:
11837 % MagickWand *MagickTransformImage(MagickWand *wand,const char *crop,
11838 % const char *geometry)
11840 % A description of each parameter follows:
11842 % o wand: the magick wand.
11844 % o crop: A crop geometry string. This geometry defines a subregion of the
11847 % o geometry: An image geometry string. This geometry defines the final
11848 % size of the image.
11851 WandExport MagickWand *MagickTransformImage(MagickWand *wand,
11852 const char *crop,const char *geometry)
11860 assert(wand != (MagickWand *) NULL);
11861 assert(wand->signature == MagickWandSignature);
11862 if (wand->debug != MagickFalse)
11863 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
11864 if (wand->images == (Image *) NULL)
11865 return((MagickWand *) NULL);
11866 transform_image=CloneImage(wand->images,0,0,MagickTrue,wand->exception);
11867 if (transform_image == (Image *) NULL)
11868 return((MagickWand *) NULL);
11869 status=TransformImage(&transform_image,crop,geometry,wand->exception);
11870 if (status == MagickFalse)
11872 transform_image=DestroyImage(transform_image);
11873 return((MagickWand *) NULL);
11875 return(CloneMagickWandFromImages(wand,transform_image));
11879 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11883 % M a g i c k T r a n s f o r m I m a g e C o l o r s p a c e %
11887 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11889 % MagickTransformImageColorspace() transform the image colorspace, setting
11890 % the images colorspace while transforming the images data to that
11893 % The format of the MagickTransformImageColorspace method is:
11895 % MagickBooleanType MagickTransformImageColorspace(MagickWand *wand,
11896 % const ColorspaceType colorspace)
11898 % A description of each parameter follows:
11900 % o wand: the magick wand.
11902 % o colorspace: the image colorspace: UndefinedColorspace,
11903 % sRGBColorspace, RGBColorspace, GRAYColorspace,
11904 % OHTAColorspace, XYZColorspace, YCbCrColorspace,
11905 % YCCColorspace, YIQColorspace, YPbPrColorspace,
11906 % YPbPrColorspace, YUVColorspace, CMYKColorspace,
11907 % HSLColorspace, HWBColorspace.
11910 WandExport MagickBooleanType MagickTransformImageColorspace(MagickWand *wand,
11911 const ColorspaceType colorspace)
11913 assert(wand != (MagickWand *) NULL);
11914 assert(wand->signature == MagickWandSignature);
11915 if (wand->debug != MagickFalse)
11916 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
11917 if (wand->images == (Image *) NULL)
11918 ThrowWandException(WandError,"ContainsNoImages",wand->name);
11919 return(TransformImageColorspace(wand->images,colorspace,wand->exception));
11923 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11927 % M a g i c k T r a n s p a r e n t P a i n t I m a g e %
11931 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11933 % MagickTransparentPaintImage() changes any pixel that matches color with the
11934 % color defined by fill.
11936 % The format of the MagickTransparentPaintImage method is:
11938 % MagickBooleanType MagickTransparentPaintImage(MagickWand *wand,
11939 % const PixelWand *target,const double alpha,const double fuzz,
11940 % const MagickBooleanType invert)
11942 % A description of each parameter follows:
11944 % o wand: the magick wand.
11946 % o target: Change this target color to specified alpha value within
11949 % o alpha: the level of transparency: 1.0 is fully opaque and 0.0 is fully
11952 % o fuzz: By default target must match a particular pixel color
11953 % exactly. However, in many cases two colors may differ by a small amount.
11954 % The fuzz member of image defines how much tolerance is acceptable to
11955 % consider two colors as the same. For example, set fuzz to 10 and the
11956 % color red at intensities of 100 and 102 respectively are now interpreted
11957 % as the same color for the purposes of the floodfill.
11959 % o invert: paint any pixel that does not match the target color.
11962 WandExport MagickBooleanType MagickTransparentPaintImage(MagickWand *wand,
11963 const PixelWand *target,const double alpha,const double fuzz,
11964 const MagickBooleanType invert)
11972 assert(wand != (MagickWand *) NULL);
11973 assert(wand->signature == MagickWandSignature);
11974 if (wand->debug != MagickFalse)
11975 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
11976 if (wand->images == (Image *) NULL)
11977 ThrowWandException(WandError,"ContainsNoImages",wand->name);
11978 PixelGetMagickColor(target,&target_pixel);
11979 wand->images->fuzz=fuzz;
11980 status=TransparentPaintImage(wand->images,&target_pixel,ClampToQuantum(
11981 QuantumRange*alpha),invert,wand->exception);
11986 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11990 % M a g i c k T r a n s p o s e I m a g e %
11994 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11996 % MagickTransposeImage() creates a vertical mirror image by reflecting the
11997 % pixels around the central x-axis while rotating them 90-degrees.
11999 % The format of the MagickTransposeImage method is:
12001 % MagickBooleanType MagickTransposeImage(MagickWand *wand)
12003 % A description of each parameter follows:
12005 % o wand: the magick wand.
12008 WandExport MagickBooleanType MagickTransposeImage(MagickWand *wand)
12013 assert(wand != (MagickWand *) NULL);
12014 assert(wand->signature == MagickWandSignature);
12015 if (wand->debug != MagickFalse)
12016 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
12017 if (wand->images == (Image *) NULL)
12018 ThrowWandException(WandError,"ContainsNoImages",wand->name);
12019 transpose_image=TransposeImage(wand->images,wand->exception);
12020 if (transpose_image == (Image *) NULL)
12021 return(MagickFalse);
12022 ReplaceImageInList(&wand->images,transpose_image);
12023 return(MagickTrue);
12027 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12031 % M a g i c k T r a n s v e r s e I m a g e %
12035 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12037 % MagickTransverseImage() creates a horizontal mirror image by reflecting the
12038 % pixels around the central y-axis while rotating them 270-degrees.
12040 % The format of the MagickTransverseImage method is:
12042 % MagickBooleanType MagickTransverseImage(MagickWand *wand)
12044 % A description of each parameter follows:
12046 % o wand: the magick wand.
12049 WandExport MagickBooleanType MagickTransverseImage(MagickWand *wand)
12054 assert(wand != (MagickWand *) NULL);
12055 assert(wand->signature == MagickWandSignature);
12056 if (wand->debug != MagickFalse)
12057 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
12058 if (wand->images == (Image *) NULL)
12059 ThrowWandException(WandError,"ContainsNoImages",wand->name);
12060 transverse_image=TransverseImage(wand->images,wand->exception);
12061 if (transverse_image == (Image *) NULL)
12062 return(MagickFalse);
12063 ReplaceImageInList(&wand->images,transverse_image);
12064 return(MagickTrue);
12068 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12072 % M a g i c k T r i m I m a g e %
12076 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12078 % MagickTrimImage() remove edges that are the background color from the image.
12080 % The format of the MagickTrimImage method is:
12082 % MagickBooleanType MagickTrimImage(MagickWand *wand,const double fuzz)
12084 % A description of each parameter follows:
12086 % o wand: the magick wand.
12088 % o fuzz: By default target must match a particular pixel color
12089 % exactly. However, in many cases two colors may differ by a small amount.
12090 % The fuzz member of image defines how much tolerance is acceptable to
12091 % consider two colors as the same. For example, set fuzz to 10 and the
12092 % color red at intensities of 100 and 102 respectively are now interpreted
12093 % as the same color for the purposes of the floodfill.
12096 WandExport MagickBooleanType MagickTrimImage(MagickWand *wand,const double fuzz)
12101 assert(wand != (MagickWand *) NULL);
12102 assert(wand->signature == MagickWandSignature);
12103 if (wand->debug != MagickFalse)
12104 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
12105 if (wand->images == (Image *) NULL)
12106 ThrowWandException(WandError,"ContainsNoImages",wand->name);
12107 wand->images->fuzz=fuzz;
12108 trim_image=TrimImage(wand->images,wand->exception);
12109 if (trim_image == (Image *) NULL)
12110 return(MagickFalse);
12111 ReplaceImageInList(&wand->images,trim_image);
12112 return(MagickTrue);
12116 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12120 % M a g i c k U n i q u e I m a g e C o l o r s %
12124 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12126 % MagickUniqueImageColors() discards all but one of any pixel color.
12128 % The format of the MagickUniqueImageColors method is:
12130 % MagickBooleanType MagickUniqueImageColors(MagickWand *wand)
12132 % A description of each parameter follows:
12134 % o wand: the magick wand.
12137 WandExport MagickBooleanType MagickUniqueImageColors(MagickWand *wand)
12142 assert(wand != (MagickWand *) NULL);
12143 assert(wand->signature == MagickWandSignature);
12144 if (wand->debug != MagickFalse)
12145 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
12146 if (wand->images == (Image *) NULL)
12147 ThrowWandException(WandError,"ContainsNoImages",wand->name);
12148 unique_image=UniqueImageColors(wand->images,wand->exception);
12149 if (unique_image == (Image *) NULL)
12150 return(MagickFalse);
12151 ReplaceImageInList(&wand->images,unique_image);
12152 return(MagickTrue);
12156 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12160 % M a g i c k U n s h a r p M a s k I m a g e %
12164 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12166 % MagickUnsharpMaskImage() sharpens an image. We convolve the image with a
12167 % Gaussian operator of the given radius and standard deviation (sigma).
12168 % For reasonable results, radius should be larger than sigma. Use a radius
12169 % of 0 and UnsharpMaskImage() selects a suitable radius for you.
12171 % The format of the MagickUnsharpMaskImage method is:
12173 % MagickBooleanType MagickUnsharpMaskImage(MagickWand *wand,
12174 % const double radius,const double sigma,const double gain,
12175 % const double threshold)
12177 % A description of each parameter follows:
12179 % o wand: the magick wand.
12181 % o radius: the radius of the Gaussian, in pixels, not counting the center
12184 % o sigma: the standard deviation of the Gaussian, in pixels.
12186 % o gain: the percentage of the difference between the original and the
12187 % blur image that is added back into the original.
12189 % o threshold: the threshold in pixels needed to apply the diffence gain.
12192 WandExport MagickBooleanType MagickUnsharpMaskImage(MagickWand *wand,
12193 const double radius,const double sigma,const double gain,
12194 const double threshold)
12199 assert(wand != (MagickWand *) NULL);
12200 assert(wand->signature == MagickWandSignature);
12201 if (wand->debug != MagickFalse)
12202 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
12203 if (wand->images == (Image *) NULL)
12204 ThrowWandException(WandError,"ContainsNoImages",wand->name);
12205 unsharp_image=UnsharpMaskImage(wand->images,radius,sigma,gain,threshold,
12207 if (unsharp_image == (Image *) NULL)
12208 return(MagickFalse);
12209 ReplaceImageInList(&wand->images,unsharp_image);
12210 return(MagickTrue);
12214 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12218 % M a g i c k V i g n e t t e I m a g e %
12222 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12224 % MagickVignetteImage() softens the edges of the image in vignette style.
12226 % The format of the MagickVignetteImage method is:
12228 % MagickBooleanType MagickVignetteImage(MagickWand *wand,
12229 % const double radius,const double sigma,const ssize_t x,
12232 % A description of each parameter follows:
12234 % o wand: the magick wand.
12236 % o radius: the radius.
12238 % o sigma: the sigma.
12240 % o x, y: Define the x and y ellipse offset.
12243 WandExport MagickBooleanType MagickVignetteImage(MagickWand *wand,
12244 const double radius,const double sigma,const ssize_t x,const ssize_t y)
12249 assert(wand != (MagickWand *) NULL);
12250 assert(wand->signature == MagickWandSignature);
12251 if (wand->debug != MagickFalse)
12252 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
12253 if (wand->images == (Image *) NULL)
12254 ThrowWandException(WandError,"ContainsNoImages",wand->name);
12255 vignette_image=VignetteImage(wand->images,radius,sigma,x,y,wand->exception);
12256 if (vignette_image == (Image *) NULL)
12257 return(MagickFalse);
12258 ReplaceImageInList(&wand->images,vignette_image);
12259 return(MagickTrue);
12263 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12267 % M a g i c k W a v e I m a g e %
12271 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12273 % MagickWaveImage() creates a "ripple" effect in the image by shifting
12274 % the pixels vertically along a sine wave whose amplitude and wavelength
12275 % is specified by the given parameters.
12277 % The format of the MagickWaveImage method is:
12279 % MagickBooleanType MagickWaveImage(MagickWand *wand,
12280 % const double amplitude,const double wave_length,
12281 % const PixelInterpolateMethod method)
12283 % A description of each parameter follows:
12285 % o wand: the magick wand.
12287 % o amplitude, wave_length: Define the amplitude and wave length of the
12290 % o method: the pixel interpolation method.
12293 WandExport MagickBooleanType MagickWaveImage(MagickWand *wand,
12294 const double amplitude,const double wave_length,
12295 const PixelInterpolateMethod method)
12300 assert(wand != (MagickWand *) NULL);
12301 assert(wand->signature == MagickWandSignature);
12302 if (wand->debug != MagickFalse)
12303 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
12304 if (wand->images == (Image *) NULL)
12305 ThrowWandException(WandError,"ContainsNoImages",wand->name);
12306 wave_image=WaveImage(wand->images,amplitude,wave_length,method,
12308 if (wave_image == (Image *) NULL)
12309 return(MagickFalse);
12310 ReplaceImageInList(&wand->images,wave_image);
12311 return(MagickTrue);
12315 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12319 % M a g i c k W h i t e T h r e s h o l d I m a g e %
12323 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12325 % MagickWhiteThresholdImage() is like ThresholdImage() but force all pixels
12326 % above the threshold into white while leaving all pixels below the threshold
12329 % The format of the MagickWhiteThresholdImage method is:
12331 % MagickBooleanType MagickWhiteThresholdImage(MagickWand *wand,
12332 % const PixelWand *threshold)
12334 % A description of each parameter follows:
12336 % o wand: the magick wand.
12338 % o threshold: the pixel wand.
12341 WandExport MagickBooleanType MagickWhiteThresholdImage(MagickWand *wand,
12342 const PixelWand *threshold)
12345 thresholds[MagickPathExtent];
12347 assert(wand != (MagickWand *) NULL);
12348 assert(wand->signature == MagickWandSignature);
12349 if (wand->debug != MagickFalse)
12350 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
12351 if (wand->images == (Image *) NULL)
12352 ThrowWandException(WandError,"ContainsNoImages",wand->name);
12353 (void) FormatLocaleString(thresholds,MagickPathExtent,
12354 QuantumFormat "," QuantumFormat "," QuantumFormat "," QuantumFormat,
12355 PixelGetRedQuantum(threshold),PixelGetGreenQuantum(threshold),
12356 PixelGetBlueQuantum(threshold),PixelGetAlphaQuantum(threshold));
12357 return(WhiteThresholdImage(wand->images,thresholds,wand->exception));
12361 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12365 % M a g i c k W r i t e I m a g e %
12369 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12371 % MagickWriteImage() writes an image to the specified filename. If the
12372 % filename parameter is NULL, the image is written to the filename set
12373 % by MagickReadImage() or MagickSetImageFilename().
12375 % The format of the MagickWriteImage method is:
12377 % MagickBooleanType MagickWriteImage(MagickWand *wand,
12378 % const char *filename)
12380 % A description of each parameter follows:
12382 % o wand: the magick wand.
12384 % o filename: the image filename.
12388 WandExport MagickBooleanType MagickWriteImage(MagickWand *wand,
12389 const char *filename)
12400 assert(wand != (MagickWand *) NULL);
12401 assert(wand->signature == MagickWandSignature);
12402 if (wand->debug != MagickFalse)
12403 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
12404 if (wand->images == (Image *) NULL)
12405 ThrowWandException(WandError,"ContainsNoImages",wand->name);
12406 if (filename != (const char *) NULL)
12407 (void) CopyMagickString(wand->images->filename,filename,MagickPathExtent);
12408 image=CloneImage(wand->images,0,0,MagickTrue,wand->exception);
12409 if (image == (Image *) NULL)
12410 return(MagickFalse);
12411 write_info=CloneImageInfo(wand->image_info);
12412 write_info->adjoin=MagickTrue;
12413 status=WriteImage(write_info,image,wand->exception);
12414 image=DestroyImage(image);
12415 write_info=DestroyImageInfo(write_info);
12420 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12424 % M a g i c k W r i t e I m a g e F i l e %
12428 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12430 % MagickWriteImageFile() writes an image to an open file descriptor.
12432 % The format of the MagickWriteImageFile method is:
12434 % MagickBooleanType MagickWriteImageFile(MagickWand *wand,FILE *file)
12436 % A description of each parameter follows:
12438 % o wand: the magick wand.
12440 % o file: the file descriptor.
12443 WandExport MagickBooleanType MagickWriteImageFile(MagickWand *wand,FILE *file)
12454 assert(wand != (MagickWand *) NULL);
12455 assert(wand->signature == MagickWandSignature);
12456 assert(file != (FILE *) NULL);
12457 if (wand->debug != MagickFalse)
12458 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
12459 if (wand->images == (Image *) NULL)
12460 ThrowWandException(WandError,"ContainsNoImages",wand->name);
12461 image=CloneImage(wand->images,0,0,MagickTrue,wand->exception);
12462 if (image == (Image *) NULL)
12463 return(MagickFalse);
12464 write_info=CloneImageInfo(wand->image_info);
12465 SetImageInfoFile(write_info,file);
12466 write_info->adjoin=MagickTrue;
12467 status=WriteImage(write_info,image,wand->exception);
12468 write_info=DestroyImageInfo(write_info);
12469 image=DestroyImage(image);
12474 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12478 % M a g i c k W r i t e I m a g e s %
12482 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12484 % MagickWriteImages() writes an image or image sequence.
12486 % The format of the MagickWriteImages method is:
12488 % MagickBooleanType MagickWriteImages(MagickWand *wand,
12489 % const char *filename,const MagickBooleanType adjoin)
12491 % A description of each parameter follows:
12493 % o wand: the magick wand.
12495 % o filename: the image filename.
12497 % o adjoin: join images into a single multi-image file.
12500 WandExport MagickBooleanType MagickWriteImages(MagickWand *wand,
12501 const char *filename,const MagickBooleanType adjoin)
12509 assert(wand != (MagickWand *) NULL);
12510 assert(wand->signature == MagickWandSignature);
12511 if (wand->debug != MagickFalse)
12512 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
12513 if (wand->images == (Image *) NULL)
12514 ThrowWandException(WandError,"ContainsNoImages",wand->name);
12515 write_info=CloneImageInfo(wand->image_info);
12516 write_info->adjoin=adjoin;
12517 status=WriteImages(write_info,wand->images,filename,wand->exception);
12518 write_info=DestroyImageInfo(write_info);
12523 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12527 % M a g i c k W r i t e I m a g e s F i l e %
12531 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12533 % MagickWriteImagesFile() writes an image sequence to an open file descriptor.
12535 % The format of the MagickWriteImagesFile method is:
12537 % MagickBooleanType MagickWriteImagesFile(MagickWand *wand,FILE *file)
12539 % A description of each parameter follows:
12541 % o wand: the magick wand.
12543 % o file: the file descriptor.
12546 WandExport MagickBooleanType MagickWriteImagesFile(MagickWand *wand,FILE *file)
12554 assert(wand != (MagickWand *) NULL);
12555 assert(wand->signature == MagickWandSignature);
12556 if (wand->debug != MagickFalse)
12557 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
12558 if (wand->images == (Image *) NULL)
12559 ThrowWandException(WandError,"ContainsNoImages",wand->name);
12560 write_info=CloneImageInfo(wand->image_info);
12561 SetImageInfoFile(write_info,file);
12562 write_info->adjoin=MagickTrue;
12563 status=WriteImages(write_info,wand->images,(const char *) NULL,
12565 write_info=DestroyImageInfo(write_info);