我想压缩一个jpeg
图像,即降低它的分辨率,而不以任何方式调整它的大小。是否有任何好的 Java 库可以帮助我做到这一点? SO 中有很多类似的帖子,但其中大多数最终也调整了图像的大小。
如果没有,我该如何以编程方式进行?比如说,对于 0.9 的参数,图像的分辨率将降低 0.1 倍...
最佳答案
通常“分辨率”表示大小。您是指 JPEG 质量吗?这是我能想到的在不调整大小的情况下压缩它的唯一方法。
如果是这样,您可以使用 Java2D ImageIO API。像下面这样的东西会起作用(改编自 this page ):
BufferedImage bufferedImage = ImageIO.read(...);
ImageWriter writer = (ImageWriter)ImageIO.getImageWritersByFormatName("jpeg").next();
ImageWriteParam iwp = writer.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwp.setCompressionQuality(...);
File file = new File(...);
FileImageOutputStream output = new FileImageOutputStream(file);
writer.setOutput(output);
IIOImage image = new IIOImage(bufferedImage, null, null);
writer.write(null, image, iwp);
writer.dispose();
不幸的是,我认为没有办法获得图像的现有 JPEG 质量,因此您必须使用一些固定的压缩质量值。
关于java - 在 Java 中更改图像分辨率而不调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14882301/