0

Code works fine for other formats of images but for .png compression is negligible or no compression at all

here is a sample how the image is loaded and saved

Or someone suggest me better way of compressing png image

This is myfirst question posted on stackoverflow. please ignore any mistakes

I have taken sample images from local folder

File input = new File("C:/Users/Public/Pictures/Sample Pictures/bz_nela19911.png");

InputStream is = new FileInputStream(input);
BufferedImage image = ImageIO.read(is);
File compressedImageFile = new File("C:/Users/Public/Pictures/Sample Pictures/me1.png");

OutputStream os =new FileOutputStream(compressedImageFile);

Iterator<ImageWriter>writers = ImageIO.getImageWritersByFormatName("png"); 
// works fine for other formats of images

ImageWriter writer = null;

while (writers.hasNext()) {
    ImageWriter candidate = writers.next();

    if (candidate.getClass().getSimpleName().equals("CLibPNGImageWriter")) {
        writer = candidate; // This is the one we want
        break;
    }
    else if (writer == null) {
        writer = candidate; 
    }
}

ImageOutputStream ios = ImageIO.createImageOutputStream(os);
writer.setOutput(ios);

ImageWriteParam param = writer.getDefaultWriteParam();

if (param.canWriteCompressed()) { 
    param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
    param.setCompressionQuality(0.1f);
}

writer.write(null, new IIOImage(image, null, null), param);
Prasad Khode
  • 6,602
  • 11
  • 44
  • 59
Chandru
  • 3
  • 2

0 Answers0