java - 在 Java 中更改图像分辨率而不调整大小

标签 java jpeg image-compression

我想压缩一个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/

相关文章:

Delphi - JPEG 错误 #53

java - JPEG 编码器 - 从命令行设置质量

php - 使用 PHP 压缩 png 图像

java - 任何人都有一个带有可扩展 ListView 的 xml 解析器

java - 如何在数据库连接中正确使用try-with-resources?

java - 带有 methodOn 的 Spring HATEOAS ControllerLinkBuilder

java - 绘制直方图

ios - 如何在调整 UIImage 大小时提高清晰度?

Java JPEG 压缩会增加文件大小

java - 如何将字符串从工作线程发送到文本区域?