I am using the code given below for image compression of jpeg/png/gif images. In the case of png image instead of decreasing size, size of image is increasing. Ex: My image size was 824 KB and after compression, its size becomes 1.2 MB. Image size should decrease or remains the same but should not increase at least. What should I do in my code to solve this?
File input = new File("digital_image_processing.png");
BufferedImage image = ImageIO.read(input);
File compressedImageFile = new File("compress.png");
OutputStream os = new FileOutputStream(compressedImageFile);
Iterator<ImageWriter>writers = ImageIO.getImageWritersByFormatName("png");
ImageWriter writer = (ImageWriter) writers.next();
ImageOutputStream ios = ImageIO.createImageOutputStream(os);
writer.setOutput(ios);
ImageWriteParam imageWriteParam = writer.getDefaultWriteParam();
if (imageWriteParam.canWriteCompressed()) {
imageWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
if (imageWriteParam.getCompressionType() == null) {
imageWriteParam.setCompressionType(imageWriteParam.getCompressionTypes()[0]);
}
imageWriteParam.setCompressionQuality(imageQuality);
}
writer.write(null, new IIOImage(image, null, null), imageWriteParam);