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;