import java.io.IOException; import java.util.Iterator; import javax.imageio.IIOImage; import javax.imageio.ImageIO; import javax.imageio.ImageWriter; import javax.imageio.ImageWriteParam; public class ImageWriterTest3 { public ImageWriterTest3(String imageType) { checkImage(imageType); } protected void checkImage(String imageType) { Iterator writers = ImageIO.getImageWritersByFormatName(imageType); if (writers.hasNext()) { ImageWriter writer = (ImageWriter)writers.next(); ImageWriteParam param = writer.getDefaultWriteParam(); System.out.println("Ability of Progressive: " + param.canWriteProgressive()); System.out.println("Ability of Compress: " + param.canWriteCompressed()); System.out.println("Ability of Tiling: " + param.canWriteTiles()); if (param.canWriteCompressed()) { showCompressionParam(param); } } } private void showCompressionParam(ImageWriteParam param) { System.out.print("\nCompression Parameter"); System.out.print("\nInitial Mode: "); switch (param.getCompressionMode()) { case ImageWriteParam.MODE_DISABLED: System.out.println("DISABLED"); break; case ImageWriteParam.MODE_EXPLICIT: System.out.println("EXPLICIT"); break; case ImageWriteParam.MODE_COPY_FROM_METADATA: System.out.println("COPY FROM METADATA"); break; case ImageWriteParam.MODE_DEFAULT: System.out.println("DEFAULT"); break; } System.out.println("\nMode set MODE_EXPLICIT"); param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); System.out.println("Quality: " + param.getCompressionQuality()); System.out.print("Quality Description: "); String[] desc = param.getCompressionQualityDescriptions(); int i; for (i = 0 ; i < desc.length - 1; i++){ System.out.print(desc[i] + ", "); } System.out.println(desc[i] + "."); System.out.print("Quality Values: "); float[] values = param.getCompressionQualityValues(); for (i = 0 ; i < values.length - 1 ; i++){ System.out.print(values[i] + ", "); } System.out.println(values[i] + "."); System.out.println("Type: " + param.getCompressionType()); System.out.print("Types: "); String[] types = param.getCompressionTypes(); for (i = 0 ; i < types.length - 1 ; i++){ System.out.print(types[i] + ", "); } System.out.println(types[i] + "."); System.out.println("Localized Type Name: " + param.getLocalizedCompressionTypeName()); } public static void main(String[] args) { if (args.length == 1) { new ImageWriterTest3(args[0]); } else { System.out.println("Usage: java ImageWriterTest3 "); } } }