【问题标题】:Java - Compressed Image size is bigger than original (BufferedImage)Java - 压缩图像尺寸大于原始尺寸 (BufferedImage)
【发布时间】:2023-02-04 06:56:34
【问题描述】:

我正在尝试压缩图像以上传到 S3 Bucket,但图像压缩后,压缩图像的大小比原始图像大。从 227KB -> 236KB 谁能为我解释为什么会这样?

这是我的代码:

 BufferedImage bufferedImage = ImageIO.read(photoFile);
 File compressedImageFile = new File("compressed_image.jpeg");
 OutputStream outputStream = new FileOutputStream(compressedImageFile);

 Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("jpeg");
 ImageWriter imageWriter = writers.next();

 ImageOutputStream imageOutputStream =  ImageIO.createImageOutputStream(outputStream);
 imageWriter.setOutput(imageOutputStream);

 ImageWriteParam imageWriteParam = imageWriter.getDefaultWriteParam();

  if (imageWriteParam.canWriteCompressed()) {
                    imageWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
  imageWriteParam.setCompressionQuality(0.5f);
  }
    imageWriter.write(null, new IIOImage(bufferedImage, null, null), imageWriteParam);

  log.info("Close stream");
  outputStream.close();
  imageOutputStream.close();
  imageWriter.dispose();

这是我的形象: original - 227KB compressed - 236KB

我试图改变压缩质量,但它似乎不起作用,这个问题在某些情况下会发生,而不是全部

【问题讨论】:

  • 在 try-with-resources 块中包装你的可关闭资源,如 writers/IO 流

标签: java bufferedimage


【解决方案1】:

jpeg 图像已经压缩。 “压缩”一个已经压缩的文件每次都会使它变大一点(标题数据)。

另一方面,文本文件会变得更小。

【讨论】:

    猜你喜欢
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    相关资源
    最近更新 更多