diff --git a/wand/mogrify.c b/wand/mogrify.c
index 7f07c65..2b869ef 100644
--- a/wand/mogrify.c
+++ b/wand/mogrify.c
@@ -3933,6 +3933,8 @@
*stack_operators[]=
{
"-delete index delete the image from the image sequence",
+ "-duplicate count[,index]",
+ " duplicate an image one or more times",
"-insert index insert last image into the image sequence",
"-swap indexes swap two images in the image sequence",
(char *) NULL
@@ -4659,6 +4661,17 @@
ThrowMogrifyInvalidArgumentException(option,argv[i]);
break;
}
+ if (LocaleCompare("delete",option+1) == 0)
+ {
+ if (*option == '+')
+ break;
+ i++;
+ if (i == (ssize_t) (argc-1))
+ ThrowMogrifyException(OptionError,"MissingArgument",option);
+ if (IsGeometry(argv[i]) == MagickFalse)
+ ThrowMogrifyInvalidArgumentException(option,argv[i]);
+ break;
+ }
if (LocaleCompare("density",option+1) == 0)
{
if (*option == '+')
@@ -4780,6 +4793,17 @@
ThrowMogrifyException(OptionError,"MissingArgument",option);
break;
}
+ if (LocaleCompare("duplicate",option+1) == 0)
+ {
+ if (*option == '+')
+ break;
+ i++;
+ if (i == (ssize_t) (argc-1))
+ ThrowMogrifyException(OptionError,"MissingArgument",option);
+ if (IsGeometry(argv[i]) == MagickFalse)
+ ThrowMogrifyInvalidArgumentException(option,argv[i]);
+ break;
+ }
if (LocaleCompare("duration",option+1) == 0)
{
if (*option == '+')
@@ -6147,6 +6171,17 @@
argv[i]);
break;
}
+ if (LocaleCompare("swap",option+1) == 0)
+ {
+ if (*option == '+')
+ break;
+ i++;
+ if (i == (ssize_t) (argc-1))
+ ThrowMogrifyException(OptionError,"MissingArgument",option);
+ if (IsGeometry(argv[i]) == MagickFalse)
+ ThrowMogrifyInvalidArgumentException(option,argv[i]);
+ break;
+ }
if (LocaleCompare("swirl",option+1) == 0)
{
if (*option == '+')
@@ -7919,6 +7954,20 @@
MagickDitherOptions,MagickFalse,argv[i+1]);
break;
}
+ if (LocaleCompare("duplicate",option+1) == 0)
+ {
+ Image
+ *duplicate_images;
+
+ if (*option == '+')
+ duplicate_images=DuplicateImages(images,"-1",exception);
+ else
+ duplicate_images=DuplicateImages(images,argv[i+1],exception);
+ if (*images != (Image *) NULL)
+ *images=DestroyImage(*images);
+ *images=duplicate_images;
+ break;
+ }
break;
}
case 'e':