44#include "MagickWand/studio.h"
45#include "MagickWand/MagickWand.h"
46#include "MagickWand/mogrify-private.h"
47#include "MagickCore/string-private.h"
48#include "MagickCore/image-private.h"
49#include "MagickCore/xwindow-private.h"
94static MagickBooleanType ImportUsage(
void)
98 " -debug events display copious debugging information\n"
99 " -help print program options\n"
100 " -list type print a list of supported option arguments\n"
101 " -log format format of debugging information\n"
102 " -version print version information",
104 " -annotate geometry text\n"
105 " annotate the image with text\n"
106 " -colors value preferred number of colors in the image\n"
107 " -crop geometry preferred size and location of the cropped image\n"
108 " -encipher filename convert plain pixels to cipher pixels\n"
109 " -extent geometry set the image size\n"
110 " -geometry geometry preferred size or location of the image\n"
111 " -help print program options\n"
112 " -monochrome transform image to black and white\n"
113 " -negate replace every pixel with its complementary color \n"
114 " -quantize colorspace reduce colors in this colorspace\n"
115 " -resize geometry resize the image\n"
116 " -rotate degrees apply Paeth rotation to the image\n"
117 " -strip strip image of all profiles and comments\n"
118 " -thumbnail geometry create a thumbnail of the image\n"
119 " -transparent color make this color transparent within the image\n"
120 " -trim trim image edges\n"
121 " -type type image type",
123 " -adjoin join images into a single multi-image file\n"
124 " -border include window border in the output image\n"
125 " -channel type apply option to select image channels\n"
126 " -colorspace type alternate image colorspace\n"
127 " -comment string annotate image with comment\n"
128 " -compress type type of pixel compression when writing the image\n"
129 " -define format:option\n"
130 " define one or more image format options\n"
131 " -density geometry horizontal and vertical density of the image\n"
132 " -depth value image depth\n"
133 " -descend obtain image by descending window hierarchy\n"
134 " -display server X server to contact\n"
135 " -dispose method layer disposal method\n"
136 " -dither method apply error diffusion to image\n"
137 " -delay value display the next image after pausing\n"
138 " -encipher filename convert plain pixels to cipher pixels\n"
139 " -endian type endianness (MSB or LSB) of the image\n"
140 " -encoding type text encoding type\n"
141 " -filter type use this filter when resizing an image\n"
142 " -format \"string\" output formatted image characteristics\n"
143 " -frame include window manager frame\n"
144 " -gravity direction which direction to gravitate towards\n"
145 " -identify identify the format and characteristics of the image\n"
146 " -interlace type None, Line, Plane, or Partition\n"
147 " -interpolate method pixel color interpolation method\n"
148 " -label string assign a label to an image\n"
149 " -limit type value Area, Disk, Map, or Memory resource limit\n"
150 " -monitor monitor progress\n"
151 " -page geometry size and location of an image canvas\n"
152 " -pause seconds seconds delay between snapshots\n"
153 " -pointsize value font point size\n"
154 " -quality value JPEG/MIFF/PNG compression level\n"
155 " -quiet suppress all warning messages\n"
156 " -regard-warnings pay attention to warning messages\n"
157 " -repage geometry size and location of an image canvas\n"
158 " -respect-parentheses settings remain in effect until parenthesis boundary\n"
159 " -sampling-factor geometry\n"
160 " horizontal and vertical sampling factor\n"
161 " -scene value image scene number\n"
162 " -screen select image from root window\n"
163 " -seed value seed a new sequence of pseudo-random numbers\n"
164 " -set property value set an image property\n"
165 " -silent operate silently, i.e. don't ring any bells \n"
166 " -snaps value number of screen snapshots\n"
167 " -support factor resize support: > 1.0 is blurry, < 1.0 is sharp\n"
168 " -synchronize synchronize image to storage device\n"
169 " -taint declare the image as modified\n"
170 " -transparent-color color\n"
171 " transparent color\n"
172 " -treedepth value color tree depth\n"
173 " -verbose print detailed information about the image\n"
174 " -virtual-pixel method\n"
175 " Constant, Edge, Mirror, or Tile\n"
176 " -window id select window with this id or name\n"
177 " root selects whole screen";
179 ListMagickVersion(stdout);
180 (void) printf(
"Usage: %s [options ...] [ file ]\n",
182 (void) printf(
"\nImage Settings:\n");
183 (void) puts(settings);
184 (void) printf(
"\nImage Operators:\n");
185 (void) puts(operators);
186 (void) printf(
"\nMiscellaneous Options:\n");
187 (void) puts(miscellaneous);
189 "\nBy default, 'file' is written in the MIFF image format. To\n");
191 "specify a particular image format, precede the filename with an image\n");
193 "format name and a colon (i.e. ps:image) or specify the image type as\n");
195 "the filename suffix (i.e. image.ps). Specify 'file' as '-' for\n");
196 (void) printf(
"standard input or output.\n");
200#if defined(MAGICKCORE_X11_DELEGATE)
201WandExport MagickBooleanType ImportImageCommand(ImageInfo *image_info,
202 int argc,
char **argv,
char **wand_unused(metadata),ExceptionInfo *exception)
204#define DestroyImport() \
206 XDestroyResourceInfo(&resource_info); \
207 if (display != (Display *) NULL) \
209 XCloseDisplay(display); \
210 display=(Display *) NULL; \
212 DestroyImageStack(); \
213 if (target_window != (char *) NULL) \
214 target_window=DestroyString(target_window); \
215 for (i=0; i < (ssize_t) argc; i++) \
216 argv[i]=DestroyString(argv[i]); \
217 argv=(char **) RelinquishMagickMemory(argv); \
219#define ThrowImportException(asperity,tag,option) \
221 char *message = GetExceptionMessage(errno); \
222 (void) ThrowMagickException(exception,GetMagickModule(),asperity,tag, \
223 "`%s'",option == (char *) NULL ? message : option); \
224 message=DestroyString(message); \
226 return(MagickFalse); \
228#define ThrowImportInvalidArgumentException(option,argument) \
230 (void) ThrowMagickException(exception,GetMagickModule(),OptionError, \
231 "InvalidArgument","'%s': %s",option,argument); \
233 return(MagickFalse); \
250 image_stack[MaxImageStackDepth+1];
283 assert(image_info != (ImageInfo *) NULL);
284 assert(image_info->signature == MagickCoreSignature);
285 assert(exception != (ExceptionInfo *) NULL);
286 wand_unreferenced(metadata);
287 if (IsEventLogging() != MagickFalse)
288 (void) LogMagickEvent(TraceEvent,GetMagickModule(),
"...");
292 if ((LocaleCompare(
"version",option+1) == 0) ||
293 (LocaleCompare(
"-version",option+1) == 0))
295 ListMagickVersion(stdout);
299 display=(Display *) NULL;
303 option=(
char *) NULL;
305 resource_database=(XrmDatabase) NULL;
306 respect_parentheses=MagickFalse;
307 (void) memset(&resource_info,0,
sizeof(resource_info));
308 server_name=(
char *) NULL;
311 target_window=(
char *) NULL;
315 ReadCommandlLine(argc,&argv);
316 status=ExpandFilenames(&argc,&argv);
317 if (status == MagickFalse)
318 ThrowImportException(ResourceLimitError,
"MemoryAllocationFailed",
320 for (i=1; i < (ssize_t) argc; i++)
326 if (IsCommandOption(option) == MagickFalse)
328 if (LocaleCompare(
"display",option+1) == 0)
334 if (i == (ssize_t) argc)
335 ThrowImportException(OptionError,
"MissingArgument",option);
338 if ((LocaleCompare(
"help",option+1) == 0) ||
339 (LocaleCompare(
"-help",option+1) == 0))
342 return(ImportUsage());
348 display=XOpenDisplay(server_name);
349 if (display == (Display *) NULL)
350 ThrowImportException(XServerError,
"UnableToOpenXServer",
351 XDisplayName(server_name));
352 (void) XSetErrorHandler(XError);
353 resource_database=XGetResourceDatabase(display,GetClientName());
354 XGetImportInfo(&ximage_info);
355 XGetResourceInfo(image_info,resource_database,GetClientName(),
357 quantize_info=resource_info.quantize_info;
358 resource_value=XGetResourceInstance(resource_database,GetClientName(),
360 ximage_info.borders=IsStringTrue(resource_value);
361 resource_value=XGetResourceInstance(resource_database,GetClientName(),
363 resource_info.delay=(
unsigned int) StringToUnsignedLong(resource_value);
364 image_info->density=XGetResourceInstance(resource_database,GetClientName(),
365 "density",(
char *) NULL);
366 resource_value=XGetResourceInstance(resource_database,GetClientName(),
368 ximage_info.descend=IsStringTrue(resource_value);
369 resource_value=XGetResourceInstance(resource_database,GetClientName(),
371 ximage_info.frame=IsStringTrue(resource_value);
372 resource_value=XGetResourceInstance(resource_database,GetClientName(),
374 image_info->interlace=UndefinedInterlace;
375 if (LocaleCompare(
"None",resource_value) == 0)
376 image_info->interlace=NoInterlace;
377 if (LocaleCompare(
"Line",resource_value) == 0)
378 image_info->interlace=LineInterlace;
379 if (LocaleCompare(
"Plane",resource_value) == 0)
380 image_info->interlace=PlaneInterlace;
381 if (LocaleCompare(
"Partition",resource_value) == 0)
382 image_info->interlace=PartitionInterlace;
383 if (image_info->interlace == UndefinedInterlace)
384 ThrowImportException(OptionError,
"Unrecognized interlace type",
386 image_info->page=XGetResourceInstance(resource_database,GetClientName(),
387 "pageGeometry",(
char *) NULL);
388 resource_value=XGetResourceInstance(resource_database,GetClientName(),
390 resource_info.pause=(
unsigned int) StringToUnsignedLong(resource_value);
391 resource_value=XGetResourceInstance(resource_database,GetClientName(),
393 image_info->quality=StringToUnsignedLong(resource_value);
394 resource_value=XGetResourceInstance(resource_database,GetClientName(),
396 ximage_info.screen=IsStringTrue(resource_value);
397 resource_value=XGetResourceInstance(resource_database,GetClientName(),
399 ximage_info.silent=IsStringTrue(resource_value);
400 resource_value=XGetResourceInstance(resource_database,GetClientName(),
402 image_info->verbose=IsStringTrue(resource_value);
403 resource_value=XGetResourceInstance(resource_database,GetClientName(),
405 quantize_info->dither_method=IsStringTrue(resource_value) != MagickFalse ?
406 RiemersmaDitherMethod : NoDitherMethod;
409 filename=(
char *) NULL;
413 for (i=1; i < (ssize_t) argc; i++)
416 if (LocaleCompare(option,
"(") == 0)
418 FireImageStack(MagickFalse,MagickTrue,pend);
419 if (k == MaxImageStackDepth)
420 ThrowImportException(OptionError,
"ParenthesisNestedTooDeeply",
425 if (LocaleCompare(option,
")") == 0)
427 FireImageStack(MagickFalse,MagickTrue,MagickTrue);
429 ThrowImportException(OptionError,
"UnableToParseExpression",option);
433 if (IsCommandOption(option) == MagickFalse)
444 FireImageStack(MagickFalse,MagickFalse,pend);
446 if (target_window != (
char *) NULL)
447 (void) CopyMagickString(image_info->filename,target_window,
449 for (scene=0; scene < (size_t) MagickMax(snapshots,1); scene++)
451 MagickDelay(1000*resource_info.pause);
452 images=XImportImage(image_info,&ximage_info,exception);
453 status&=(MagickStatusType) (images != (Image *) NULL) &&
454 (exception->severity < ErrorException);
455 if (images == (Image *) NULL)
457 (void) CopyMagickString(images->filename,filename,MagickPathExtent);
458 (void) CopyMagickString(images->magick,
"PS",MagickPathExtent);
460 AppendImageStack(images);
464 pend=image != (Image *) NULL ? MagickTrue : MagickFalse;
469 if (LocaleCompare(
"adjoin",option+1) == 0)
471 if (LocaleCompare(
"annotate",option+1) == 0)
476 if (i == (ssize_t) argc)
477 ThrowImportException(OptionError,
"MissingArgument",option);
478 if (IsGeometry(argv[i]) == MagickFalse)
479 ThrowImportInvalidArgumentException(option,argv[i]);
480 if (i == (ssize_t) argc)
481 ThrowImportException(OptionError,
"MissingArgument",option);
485 ThrowImportException(OptionError,
"UnrecognizedOption",option);
489 if (LocaleCompare(
"border",option+1) == 0)
491 (void) CopyMagickString(argv[i]+1,
"sans",MagickPathExtent);
492 ximage_info.borders=(*option ==
'-') ? MagickTrue : MagickFalse;
495 if (LocaleCompare(
"bordercolor",option+1) == 0)
500 if (i == (ssize_t) argc)
501 ThrowImportException(OptionError,
"MissingArgument",option);
504 ThrowImportException(OptionError,
"UnrecognizedOption",option);
508 if (LocaleCompare(
"cache",option+1) == 0)
513 if (i == (ssize_t) argc)
514 ThrowImportException(OptionError,
"MissingArgument",option);
515 if (IsGeometry(argv[i]) == MagickFalse)
516 ThrowImportInvalidArgumentException(option,argv[i]);
519 if (LocaleCompare(
"channel",option+1) == 0)
527 if (i == (ssize_t) argc)
528 ThrowImportException(OptionError,
"MissingArgument",option);
529 channel=ParseChannelOption(argv[i]);
531 ThrowImportException(OptionError,
"UnrecognizedChannelType",
535 if (LocaleCompare(
"colors",option+1) == 0)
537 quantize_info->number_colors=0;
541 if (i == (ssize_t) argc)
542 ThrowImportException(OptionError,
"MissingArgument",option);
543 if (IsGeometry(argv[i]) == MagickFalse)
544 ThrowImportInvalidArgumentException(option,argv[i]);
545 quantize_info->number_colors=StringToUnsignedLong(argv[i]);
548 if (LocaleCompare(
"colorspace",option+1) == 0)
556 if (i == (ssize_t) argc)
557 ThrowImportException(OptionError,
"MissingArgument",option);
558 colorspace=ParseCommandOption(MagickColorspaceOptions,MagickFalse,
561 ThrowImportException(OptionError,
"UnrecognizedColorspace",
565 if (LocaleCompare(
"comment",option+1) == 0)
570 if (i == (ssize_t) argc)
571 ThrowImportException(OptionError,
"MissingArgument",option);
572 status=SetImageOption(image_info,
"comment",argv[i]);
573 if (status == MagickFalse)
574 ThrowImportException(OptionError,
"UnrecognizedOption",argv[i]);
577 if (LocaleCompare(
"compress",option+1) == 0)
585 if (i == (ssize_t) argc)
586 ThrowImportException(OptionError,
"MissingArgument",option);
587 compress=ParseCommandOption(MagickCompressOptions,MagickFalse,
590 ThrowImportException(OptionError,
"UnrecognizedImageCompression",
594 if (LocaleCompare(
"concurrent",option+1) == 0)
596 if (LocaleCompare(
"crop",option+1) == 0)
601 if (i == (ssize_t) argc)
602 ThrowImportException(OptionError,
"MissingArgument",option);
603 if (IsGeometry(argv[i]) == MagickFalse)
604 ThrowImportInvalidArgumentException(option,argv[i]);
607 ThrowImportException(OptionError,
"UnrecognizedOption",option);
611 if (LocaleCompare(
"debug",option+1) == 0)
619 if (i == (ssize_t) argc)
620 ThrowImportException(OptionError,
"MissingArgument",option);
621 event=ParseCommandOption(MagickLogEventOptions,MagickFalse,argv[i]);
623 ThrowImportException(OptionError,
"UnrecognizedEventType",argv[i]);
624 (void) SetLogEventMask(argv[i]);
627 if (LocaleCompare(
"define",option+1) == 0)
630 if (i == (ssize_t) argc)
631 ThrowImportException(OptionError,
"MissingArgument",option);
637 define=GetImageOption(image_info,argv[i]);
638 if (define == (
char *) NULL)
639 ThrowImportException(OptionError,
"NoSuchOption",argv[i]);
644 if (LocaleCompare(
"delay",option+1) == 0)
649 if (i == (ssize_t) argc)
650 ThrowImportException(OptionError,
"MissingArgument",option);
651 if (IsGeometry(argv[i]) == MagickFalse)
652 ThrowImportInvalidArgumentException(option,argv[i]);
653 status=SetImageOption(image_info,
"delay",argv[i]);
654 if (status == MagickFalse)
655 ThrowImportException(OptionError,
"UnrecognizedOption",argv[i]);
658 if (LocaleCompare(
"density",option+1) == 0)
663 if (i == (ssize_t) argc)
664 ThrowImportException(OptionError,
"MissingArgument",option);
665 if (IsGeometry(argv[i]) == MagickFalse)
666 ThrowImportInvalidArgumentException(option,argv[i]);
669 if (LocaleCompare(
"depth",option+1) == 0)
674 if (i == (ssize_t) argc)
675 ThrowImportException(OptionError,
"MissingArgument",option);
676 if (IsGeometry(argv[i]) == MagickFalse)
677 ThrowImportInvalidArgumentException(option,argv[i]);
680 if (LocaleCompare(
"descend",option+1) == 0)
682 ximage_info.descend=(*option ==
'-') ? MagickTrue : MagickFalse;
685 if (LocaleCompare(
"display",option+1) == 0)
690 if (i == (ssize_t) argc)
691 ThrowImportException(OptionError,
"MissingArgument",option);
694 if (LocaleCompare(
"dispose",option+1) == 0)
702 if (i == (ssize_t) argc)
703 ThrowImportException(OptionError,
"MissingArgument",option);
704 dispose=ParseCommandOption(MagickDisposeOptions,MagickFalse,argv[i]);
706 ThrowImportException(OptionError,
"UnrecognizedDisposeMethod",
710 if (LocaleCompare(
"dither",option+1) == 0)
715 quantize_info->dither_method=NoDitherMethod;
719 if (i == (ssize_t) argc)
720 ThrowImportException(OptionError,
"MissingArgument",option);
721 method=ParseCommandOption(MagickDitherOptions,MagickFalse,argv[i]);
723 ThrowImportException(OptionError,
"UnrecognizedDitherMethod",
725 quantize_info->dither_method=(DitherMethod) method;
728 if (LocaleCompare(
"duration",option+1) == 0)
733 if (i == (ssize_t) argc)
734 ThrowImportException(OptionError,
"MissingArgument",option);
735 if (IsGeometry(argv[i]) == MagickFalse)
736 ThrowImportInvalidArgumentException(option,argv[i]);
739 ThrowImportException(OptionError,
"UnrecognizedOption",option);
743 if (LocaleCompare(
"encipher",option+1) == 0)
748 if (i == (ssize_t) argc)
749 ThrowImportException(OptionError,
"MissingArgument",option);
752 if (LocaleCompare(
"encoding",option+1) == 0)
757 if (i == (ssize_t) argc)
758 ThrowImportException(OptionError,
"MissingArgument",option);
761 if (LocaleCompare(
"endian",option+1) == 0)
769 if (i == (ssize_t) argc)
770 ThrowImportException(OptionError,
"MissingArgument",option);
771 endian=ParseCommandOption(MagickEndianOptions,MagickFalse,
774 ThrowImportException(OptionError,
"UnrecognizedEndianType",
778 if (LocaleCompare(
"extent",option+1) == 0)
783 if (i == (ssize_t) argc)
784 ThrowImportException(OptionError,
"MissingArgument",option);
785 if (IsGeometry(argv[i]) == MagickFalse)
786 ThrowImportInvalidArgumentException(option,argv[i]);
789 ThrowImportException(OptionError,
"UnrecognizedOption",option);
793 if (LocaleCompare(
"filter",option+1) == 0)
801 if (i == (ssize_t) argc)
802 ThrowImportException(OptionError,
"MissingArgument",option);
803 filter=ParseCommandOption(MagickFilterOptions,MagickFalse,argv[i]);
805 ThrowImportException(OptionError,
"UnrecognizedImageFilter",
809 if (LocaleCompare(
"frame",option+1) == 0)
811 (void) CopyMagickString(argv[i]+1,
"sans0",MagickPathExtent);
812 ximage_info.frame=(*option ==
'-') ? MagickTrue : MagickFalse;
815 if (LocaleCompare(
"format",option+1) == 0)
820 if (i == (ssize_t) argc)
821 ThrowImportException(OptionError,
"MissingArgument",option);
824 ThrowImportException(OptionError,
"UnrecognizedOption",option);
828 if (LocaleCompare(
"geometry",option+1) == 0)
833 if (i == (ssize_t) argc)
834 ThrowImportException(OptionError,
"MissingArgument",option);
835 if (IsGeometry(argv[i]) == MagickFalse)
836 ThrowImportInvalidArgumentException(option,argv[i]);
839 if (LocaleCompare(
"gravity",option+1) == 0)
847 if (i == (ssize_t) argc)
848 ThrowImportException(OptionError,
"MissingArgument",option);
849 gravity=ParseCommandOption(MagickGravityOptions,MagickFalse,argv[i]);
851 ThrowImportException(OptionError,
"UnrecognizedGravityType",
855 ThrowImportException(OptionError,
"UnrecognizedOption",option);
859 if (LocaleCompare(
"help",option+1) == 0)
861 ThrowImportException(OptionError,
"UnrecognizedOption",option);
865 if (LocaleCompare(
"identify",option+1) == 0)
867 if (LocaleCompare(
"interlace",option+1) == 0)
875 if (i == (ssize_t) argc)
876 ThrowImportException(OptionError,
"MissingArgument",option);
877 interlace=ParseCommandOption(MagickInterlaceOptions,MagickFalse,
880 ThrowImportException(OptionError,
"UnrecognizedInterlaceType",
884 if (LocaleCompare(
"interpolate",option+1) == 0)
892 if (i == (ssize_t) argc)
893 ThrowImportException(OptionError,
"MissingArgument",option);
894 interpolate=ParseCommandOption(MagickInterpolateOptions,MagickFalse,
897 ThrowImportException(OptionError,
"UnrecognizedInterpolateMethod",
901 ThrowImportException(OptionError,
"UnrecognizedOption",option);
905 if (LocaleCompare(
"label",option+1) == 0)
910 if (i == (ssize_t) argc)
911 ThrowImportException(OptionError,
"MissingArgument",option);
912 status=SetImageOption(image_info,
"label",argv[i]);
913 if (status == MagickFalse)
914 ThrowImportException(OptionError,
"UnrecognizedOption",argv[i]);
917 if (LocaleCompare(
"limit",option+1) == 0)
931 if (i == (ssize_t) argc)
932 ThrowImportException(OptionError,
"MissingArgument",option);
933 resource=ParseCommandOption(MagickResourceOptions,MagickFalse,
936 ThrowImportException(OptionError,
"UnrecognizedResourceType",
939 if (i == (ssize_t) argc)
940 ThrowImportException(OptionError,
"MissingArgument",option);
941 value=StringToDouble(argv[i],&p);
943 if ((p == argv[i]) && (LocaleCompare(
"unlimited",argv[i]) != 0))
944 ThrowImportInvalidArgumentException(option,argv[i]);
947 if (LocaleCompare(
"list",option+1) == 0)
955 if (i == (ssize_t) argc)
956 ThrowImportException(OptionError,
"MissingArgument",option);
957 list=ParseCommandOption(MagickListOptions,MagickFalse,argv[i]);
959 ThrowImportException(OptionError,
"UnrecognizedListType",argv[i]);
960 status=MogrifyImageInfo(image_info,(
int) (i-j+1),(
const char **)
963 return(status == 0 ? MagickFalse : MagickTrue);
965 if (LocaleCompare(
"log",option+1) == 0)
970 if ((i == (ssize_t) argc) || (strchr(argv[i],
'%') == (
char *) NULL))
971 ThrowImportException(OptionError,
"MissingArgument",option);
974 ThrowImportException(OptionError,
"UnrecognizedOption",option);
978 if (LocaleCompare(
"monitor",option+1) == 0)
980 if (LocaleCompare(
"monochrome",option+1) == 0)
984 quantize_info->number_colors=2;
985 quantize_info->colorspace=GRAYColorspace;
988 ThrowImportException(OptionError,
"UnrecognizedOption",option);
992 if (LocaleCompare(
"negate",option+1) == 0)
994 ThrowImportException(OptionError,
"UnrecognizedOption",option);
998 if (LocaleCompare(
"page",option+1) == 0)
1003 if (i == (ssize_t) argc)
1004 ThrowImportException(OptionError,
"MissingArgument",option);
1005 status=SetImageOption(image_info,
"page",argv[i]);
1006 if (status == MagickFalse)
1007 ThrowImportException(OptionError,
"UnrecognizedOption",argv[i]);
1010 if (LocaleCompare(
"pause",option+1) == 0)
1012 resource_info.pause=0;
1016 if (i == (ssize_t) argc)
1017 ThrowImportException(OptionError,
"MissingArgument",option);
1018 if (IsGeometry(argv[i]) == MagickFalse)
1019 ThrowImportInvalidArgumentException(option,argv[i]);
1020 resource_info.pause=(
unsigned int) StringToUnsignedLong(argv[i]);
1023 if (LocaleCompare(
"ping",option+1) == 0)
1025 if (LocaleCompare(
"pointsize",option+1) == 0)
1030 if (i == (ssize_t) argc)
1031 ThrowImportException(OptionError,
"MissingArgument",option);
1032 if (IsGeometry(argv[i]) == MagickFalse)
1033 ThrowImportInvalidArgumentException(option,argv[i]);
1036 ThrowImportException(OptionError,
"UnrecognizedOption",option);
1040 if (LocaleCompare(
"quality",option+1) == 0)
1045 if (i == (ssize_t) argc)
1046 ThrowImportException(OptionError,
"MissingArgument",option);
1047 if (IsGeometry(argv[i]) == MagickFalse)
1048 ThrowImportInvalidArgumentException(option,argv[i]);
1051 if (LocaleCompare(
"quantize",option+1) == 0)
1059 if (i == (ssize_t) argc)
1060 ThrowImportException(OptionError,
"MissingArgument",option);
1061 colorspace=ParseCommandOption(MagickColorspaceOptions,
1062 MagickFalse,argv[i]);
1064 ThrowImportException(OptionError,
"UnrecognizedColorspace",
1068 if (LocaleCompare(
"quiet",option+1) == 0)
1070 ThrowImportException(OptionError,
"UnrecognizedOption",option);
1074 if (LocaleCompare(
"regard-warnings",option+1) == 0)
1076 if (LocaleCompare(
"repage",option+1) == 0)
1081 if (i == (ssize_t) argc)
1082 ThrowImportException(OptionError,
"MissingArgument",option);
1083 if (IsGeometry(argv[i]) == MagickFalse)
1084 ThrowImportInvalidArgumentException(option,argv[i]);
1087 if (LocaleCompare(
"resize",option+1) == 0)
1092 if (i == (ssize_t) argc)
1093 ThrowImportException(OptionError,
"MissingArgument",option);
1094 if (IsGeometry(argv[i]) == MagickFalse)
1095 ThrowImportInvalidArgumentException(option,argv[i]);
1098 if (LocaleNCompare(
"respect-parentheses",option+1,17) == 0)
1100 respect_parentheses=(*option ==
'-') ? MagickTrue : MagickFalse;
1103 if (LocaleCompare(
"rotate",option+1) == 0)
1106 if (i == (ssize_t) argc)
1107 ThrowImportException(OptionError,
"MissingArgument",option);
1108 if (IsGeometry(argv[i]) == MagickFalse)
1109 ThrowImportInvalidArgumentException(option,argv[i]);
1112 ThrowImportException(OptionError,
"UnrecognizedOption",option);
1116 if (LocaleCompare(
"sampling-factor",option+1) == 0)
1121 if (i == (ssize_t) argc)
1122 ThrowImportException(OptionError,
"MissingArgument",option);
1123 if (IsGeometry(argv[i]) == MagickFalse)
1124 ThrowImportInvalidArgumentException(option,argv[i]);
1127 if (LocaleCompare(
"scene",option+1) == 0)
1132 if (i == (ssize_t) argc)
1133 ThrowImportException(OptionError,
"MissingArgument",option);
1134 if (IsGeometry(argv[i]) == MagickFalse)
1135 ThrowImportInvalidArgumentException(option,argv[i]);
1138 if (LocaleCompare(
"set",option+1) == 0)
1141 if (i == (ssize_t) argc)
1142 ThrowImportException(OptionError,
"MissingArgument",option);
1146 if (i == (ssize_t) argc)
1147 ThrowImportException(OptionError,
"MissingArgument",option);
1150 if (LocaleCompare(
"screen",option+1) == 0)
1152 ximage_info.screen=(*option ==
'-') ? MagickTrue : MagickFalse;
1155 if (LocaleCompare(
"seed",option+1) == 0)
1160 if (i == (ssize_t) argc)
1161 ThrowImportException(OptionError,
"MissingArgument",option);
1162 if (IsGeometry(argv[i]) == MagickFalse)
1163 ThrowImportInvalidArgumentException(option,argv[i]);
1166 if (LocaleCompare(
"silent",option+1) == 0)
1168 ximage_info.silent=(*option ==
'-') ? MagickTrue : MagickFalse;
1171 if (LocaleCompare(
"snaps",option+1) == 0)
1173 (void) CopyMagickString(argv[i]+1,
"sans",MagickPathExtent);
1175 if (i == (ssize_t) argc)
1176 ThrowImportException(OptionError,
"MissingArgument",option);
1177 if (IsGeometry(argv[i]) == MagickFalse)
1178 ThrowImportInvalidArgumentException(option,argv[i]);
1179 snapshots=(ssize_t) StringToLong(argv[i]);
1182 if (LocaleCompare(
"strip",option+1) == 0)
1184 if (LocaleCompare(
"support",option+1) == 0)
1189 if (LocaleCompare(
"synchronize",option+1) == 0)
1191 ThrowImportException(OptionError,
"UnrecognizedOption",option);
1195 if (LocaleCompare(
"taint",option+1) == 0)
1197 if (LocaleCompare(
"thumbnail",option+1) == 0)
1202 if (i == (ssize_t) argc)
1203 ThrowImportException(OptionError,
"MissingArgument",option);
1204 if (IsGeometry(argv[i]) == MagickFalse)
1205 ThrowImportInvalidArgumentException(option,argv[i]);
1208 if (LocaleCompare(
"transparent",option+1) == 0)
1211 if (i == (ssize_t) argc)
1212 ThrowImportException(OptionError,
"MissingArgument",option);
1215 if (LocaleCompare(
"transparent-color",option+1) == 0)
1220 if (i == (ssize_t) argc)
1221 ThrowImportException(OptionError,
"MissingArgument",option);
1224 if (LocaleCompare(
"treedepth",option+1) == 0)
1226 quantize_info->tree_depth=0;
1230 if (i == (ssize_t) argc)
1231 ThrowImportException(OptionError,
"MissingArgument",option);
1232 if (IsGeometry(argv[i]) == MagickFalse)
1233 ThrowImportInvalidArgumentException(option,argv[i]);
1234 quantize_info->tree_depth=StringToUnsignedLong(argv[i]);
1237 if (LocaleCompare(
"trim",option+1) == 0)
1239 if (LocaleCompare(
"type",option+1) == 0)
1247 if (i == (ssize_t) argc)
1248 ThrowImportException(OptionError,
"MissingArgument",option);
1249 type=ParseCommandOption(MagickTypeOptions,MagickFalse,argv[i]);
1251 ThrowImportException(OptionError,
"UnrecognizedImageType",argv[i]);
1254 ThrowImportException(OptionError,
"UnrecognizedOption",option);
1259 if (i == (ssize_t) argc)
1260 ThrowImportException(OptionError,
"MissingArgument",option);
1261 (void) CloneString(&target_window,argv[i]);
1266 if (LocaleCompare(
"verbose",option+1) == 0)
1268 if ((LocaleCompare(
"version",option+1) == 0) ||
1269 (LocaleCompare(
"-version",option+1) == 0))
1271 ListMagickVersion(stdout);
1274 ThrowImportException(OptionError,
"UnrecognizedOption",option);
1279 ThrowImportException(OptionError,
"UnrecognizedOption",option);
1281 fire=(GetCommandOptionFlags(MagickCommandOptions,MagickFalse,option) &
1282 FireOptionFlag) == 0 ? MagickFalse : MagickTrue;
1283 if (fire != MagickFalse)
1284 FireImageStack(MagickFalse,MagickTrue,MagickTrue);
1287 ThrowImportException(OptionError,
"UnbalancedParenthesis",argv[i]);
1288 if (i-- != (ssize_t) argc)
1289 ThrowImportException(OptionError,
"MissingAnImageFilename",argv[i]);
1290 if (image == (Image *) NULL)
1291 ThrowImportException(OptionError,
"MissingAnImageFilename",argv[argc-1]);
1292 FinalizeImageSettings(image_info,image,MagickTrue);
1293 status&=(MagickStatusType) WriteImages(image_info,image,filename,exception);
1295 return(status != 0 ? MagickTrue : MagickFalse);
1297WandExport MagickBooleanType ImportImageCommand(ImageInfo *image_info,
1298 int wand_unused(argc),
char **wand_unused(argv),
char **wand_unused(metadata),
1299 ExceptionInfo *exception)
1301 wand_unreferenced(argc);
1302 wand_unreferenced(argv);
1303 wand_unreferenced(metadata);
1304 (void) ThrowMagickException(exception,GetMagickModule(),MissingDelegateError,
1305 "DelegateLibrarySupportNotBuiltIn",
"'%s' (X11)",image_info->filename);
1306 return(ImportUsage());