【发布时间】:2014-08-23 16:15:28
【问题描述】:
我正在使用 javax.imageio API 和 JAI 来压缩不同类型的图像。它适用于使用JPEGImageWriter 的JPEG 和使用GIFImageWriter 的GIF。但它不支持使用PNGImageWriter 进行PNG 压缩,这会引发异常,例如未设置压缩类型或“没有有效压缩”等。所以我在ImageWriter 下方使用它来处理PNG。它可以工作,但图像质量太差了。
谁能建议如何使用PNGImageWriter 进行PNG 压缩以及哪个JAR 包含它?
File input = new File("test.png");
InputStream is = new FileInputStream(input);
BufferedImage image = ImageIO.read(is);
File compressedImageFile = new File(input.getName());
OutputStream os =new FileOutputStream(compressedImageFile);
Iterator<ImageWriter>writers =
ImageIO.getImageWritersByFormatName("jpg"); // here "png" does not work
ImageWriter writer = (ImageWriter) writers.next();
ImageOutputStream ios = ImageIO.createImageOutputStream(os);
writer.setOutput(ios);
ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(0.5f);
writer.write(null, new IIOImage(image, null, null), param);
【问题讨论】:
标签: java compression javax.imageio jai image-compression