Expose the option of try_best_compression_for_png
diff --git a/pagespeed/kernel/image/image_optimizer.cc b/pagespeed/kernel/image/image_optimizer.cc
index 63d9069..50c5317 100644
--- a/pagespeed/kernel/image/image_optimizer.cc
+++ b/pagespeed/kernel/image/image_optimizer.cc
@@ -230,7 +230,7 @@
     case IMAGE_PNG:
       png_config.reset(
           new PngCompressParams(
-              true /* try best compression */,
+              options_.try_best_compression_for_png(),
               false /* never use progressive format */));
       writer_config_.reset(png_config.release());
       result = true;
diff --git a/pagespeed/kernel/image/image_optimizer.proto b/pagespeed/kernel/image/image_optimizer.proto
index aa16b35..8e70af9 100644
--- a/pagespeed/kernel/image/image_optimizer.proto
+++ b/pagespeed/kernel/image/image_optimizer.proto
@@ -35,6 +35,10 @@
   optional int32 max_webp_quality = 9 [ default = 85 ];
   optional int32 max_webp_animated_quality = 10 [ default = 85 ];
   optional int32 max_timeout_ms = 11 [ default = -1 ];
+  // When |try_best_compression_for_png| is set to true, the optimizer uses
+  // multiple methods, including the expensive ones, for encoding PNG images.
+  // The smallest output from all methods will be returned.
+  optional bool try_best_compression_for_png = 12 [ default = true ];
 }
 
 message ImageDimensions {