When writing a JPEG image, how do I control the compression level/quality?
Created May 8, 2012
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 ImageWriteParam
object 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()
.