【发布时间】: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