我使用下面给出的jpeg图像压缩图像的代码。针对任何图像格式(jpg,PNG,gif)的java图像压缩
File input = new File("digital_image_processing.jpg");
BufferedImage image = ImageIO.read(input);
File compressedImageFile = new File("compress.jpg");
OutputStream os = new FileOutputStream(compressedImageFile);
Iterator<ImageWriter>writers = ImageIO.getImageWritersByFormatName("jpg");
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.05f);
writer.write(null, new IIOImage(image, null, null), param);
但是当我通过改变ImageIO.getImageWritersByFormatName( “PNG”),试图为PNG格式; 它给我的错误,不支持压缩。
那么我应该如何修改上面的代码,以支持所有图像格式压缩
可能的重复[我如何写一个BufferedImage作为一个PNG没有压缩?](http://stackoverflow.com/questions/15318677/how-do-i-write-a-bufferedimage-as-a- png-with-no-compression) – immibis 2015-02-10 18:36:38
这不是一个重复的,它是一个完全不同的问题 – dragon66 2015-02-10 19:23:24
@ dragon66您使用的代码几乎完全一样,并且获得相同的错误,即使您使用该代码的原因不同 – immibis 2015-02-11 04:49:42