Сжатие изображений Java для изображений PNG с использованием imageio - PullRequest
1 голос
/ 03 июля 2019

Я использую приведенный ниже код для сжатия изображений в формате jpeg / png / gif. В случае изображения png вместо уменьшения размера, размер изображения увеличивается. Пример: размер моего изображения составил 824 КБ, а после сжатия его размер становится равным 1,2 МБ. Размер изображения должен уменьшиться или остаться прежним, но не должен увеличиваться по крайней мере Что я должен сделать в своем коде, чтобы решить эту проблему?

   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);
...