我使用下面給出的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