【发布时间】:2011-08-05 04:07:45
【问题描述】:
使用ImageIO 保存新图像时,通用ImageWriteParam 支持显式设置compressionQuality 参数,范围从0.0f(高压缩)到1.0f(高质量),无论使用何种图像压缩算法(例如。 png, jpeg, gif)。
- 有没有办法从现有图像中读取
compressionQuality? -
compressionQuality写入参数是否只是对ImageWriter的提示,并且没有存储在图像元数据的任何位置?如果这是真的,图像处理软件(例如 GIMP)如何设法在“另存为”对话框中提供以下选项?
我设法从ImageInputStream 读取IIOMetadata 并遍历其metadataFormatNames 以打印出不同XML 格式的图像元数据(通常是本机和标准javax_imageio_1.0)。虽然我在里面找不到任何图片compressionQuality的迹象。
【问题讨论】:
-
虽然某些软件和某些图像格式可能允许存储您通常无法做到的信息。将 jpeg 保存为“80% 质量”(无论这意味着什么)。现在将其转换为 PNG。现在将其重新转换为保存为“80% 质量”的 jpeg。即使文件格式保存了质量,你会得到什么? 80%?那将是完全错误的。它是 80% 的 80%(再一次,无论“80%”是什么意思)。此外,对于某些格式,“压缩质量”取决于压缩器的质量。对于某些格式,一个程序的“80%”百分比可能是另一个程序的“70%”,等等。
标签: java jpeg javax.imageio gimp image-compression