When writing a JPEG image, how do I control the compression level/quality?
John Zukowski You can get the default writing parameters for a specific ImageWriter through its getDefaultWriteParam() method. The method returns an ImageWriteParam object. For JPEGs, this happens to be an instance of the
javax.imageio.plugins.jpeg.JPEGImageWriteParam. To change the compression level, you need to tell the
ImageWriteParamobject that you want to set the compression mode explicitly:
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT). Then you set the compression quality with
iwp.setCompressionQuality(floatLevel). You don't have to pick a value at random. Instead, you can ask the writer what compression quality values it supports (or how much it will compress things)
float values = iwp.getCompressionQualityValues().