diff --git a/coders/jpeg.c b/coders/jpeg.c
index 17e090e..9f29a26 100644
--- a/coders/jpeg.c
+++ b/coders/jpeg.c
@@ -1025,6 +1025,34 @@
jpeg_info.quantize_colors=MagickTrue;
jpeg_info.desired_number_of_colors=(int) image_info->colors;
}
+ option=GetImageOption(image_info,"jpeg:dct-method");
+ if (option != (const char *) NULL)
+ {
+ if (LocaleCompare(value,"ISLOW") == 0)
+ jpeg_info.dct_method=JDCT_ISLOW;
+ if (LocaleCompare(value,"IFAST") == 0)
+ jpeg_info.dct_method=JDCT_IFAST;
+ if (LocaleCompare(value,"FLOAT") == 0)
+ jpeg_info.dct_method=JDCT_FLOAT;
+ if (LocaleCompare(value,"DEFAULT") == 0)
+ jpeg_info.dct_method=JDCT_DEFAULT;
+ if (LocaleCompare(value,"FASTEST") == 0)
+ jpeg_info.dct_method=JDCT_FASTEST;
+ }
+ option=GetImageOption(image_info,"jpeg:block-smoothing");
+ if (option != (const char *) NULL)
+ {
+ jpeg_info.do_block_smoothing=MagickFalse;
+ if (IsMagickTrue(option) != MagickFalse)
+ jpeg_info.do_block_smoothing=MagickTrue;
+ }
+ option=GetImageOption(image_info,"jpeg:fancy-upsampling");
+ if (option != (const char *) NULL)
+ {
+ jpeg_info.do_fancy_upsampling=MagickFalse;
+ if (IsMagickTrue(option) != MagickFalse)
+ jpeg_info.do_fancy_upsampling=MagickTrue;
+ }
(void) jpeg_start_decompress(&jpeg_info);
image->columns=jpeg_info.output_width;
image->rows=jpeg_info.output_height;