Description: This change adds setOptimizeHuffmanTables(true) to the Jpeg params. (gives additional 6% of compression without any addition loss in the image quality)
Since the generalized call for ImageIOOutputter.write(new IIOImage()) has a bug, that ignores this parameter while enocding, we are using more specific call for writing for jpeg images that respects this new parameter. Refer: com.sun.imageio.plugins.jpeg.JPEGImageWriter.java:352 write(...) function. Note: The old flow also has a hidden bug that sets wrong 'Default Quantization Tables' while doing jpeg compression with 'ImageWriteParam.MODE_EXPLICIT' that results in encode phase of jpeg effectively use different compression quality (> than config.getJpegCompression()). This bug fix effectively gives +4% more compression in bytes. Refer: ( http://www.java2s.com/Open-Source/Java-Document/6.0-JDK-Modules-com.sun/image.. .) BaseOptimizer.java:172 in writer.getDefaultImageMetadata(...) ---> com.sun.imageio.plugins.jpeg.JPEGImageWriter.java:609 ---> com.sun.imageio.plugins.jpeg.DQTMarkerSegment.java:215 in Qtable(boolean wantLuma, float quality) function, K2Div2Chrominance is used instead of K2Chrominance. Please review this at http://codereview.appspot.com/2322042/ Affected files: java/common/conf/shindig.properties java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/PNGOptimizer.java java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/JPEGOptimizer.java java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/OptimizerConfig.java java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/BaseOptimizer.java Regards, Satyanarayana.
