为什么在 ImageIO.save() 中降低 png/jpg 品质因数不会减小输出图像文件的大小?
Why the decreasing the png/jpg quality factor in ImageIO.save() does not decrease the output image file size?
我一直在用
ImageIO.getImageIO().save(image, os, ImageIO.FORMAT_PNG, qualityFactor)
在文件中保存图像的方法。无论我将 0.0 和 1.0 之间的浮点值用作 qualityFactor,无论我选择何种格式(PNG 或 JPEG),我总是得到相同的输出文件大小(以 kB 为单位)。
注意:我只在模拟器 (iPhone / Android) 上检查过这个,而不是在真实设备上。
考虑质量因子的正确方法是什么?
干杯,
这是对底层平台的提示,并非所有平台都接受这样的提示。 iOS 有但 Android 没有。
iOS 只接受 JPEG,因此它对无损格式 PNG 没有影响。
PNG 中没有 "Quality" 调整。显然你的编码器的 API 有这样的兼容性设置。在 PNG 中,可以进行时间与压缩大小的比较,但这不会影响图像质量。
在 JPEG 中,存在质量与大小的权衡。但是,JPEG 没有固有的 "quality" 因素。质量是子采样、量化 table 选择和(在较小程度上)最佳霍夫曼 tables.
的函数
您的编码器使用 "quality" 参数做什么是任何人的猜测。
我一直在用
ImageIO.getImageIO().save(image, os, ImageIO.FORMAT_PNG, qualityFactor)
在文件中保存图像的方法。无论我将 0.0 和 1.0 之间的浮点值用作 qualityFactor,无论我选择何种格式(PNG 或 JPEG),我总是得到相同的输出文件大小(以 kB 为单位)。
注意:我只在模拟器 (iPhone / Android) 上检查过这个,而不是在真实设备上。
考虑质量因子的正确方法是什么?
干杯,
这是对底层平台的提示,并非所有平台都接受这样的提示。 iOS 有但 Android 没有。
iOS 只接受 JPEG,因此它对无损格式 PNG 没有影响。
PNG 中没有 "Quality" 调整。显然你的编码器的 API 有这样的兼容性设置。在 PNG 中,可以进行时间与压缩大小的比较,但这不会影响图像质量。
在 JPEG 中,存在质量与大小的权衡。但是,JPEG 没有固有的 "quality" 因素。质量是子采样、量化 table 选择和(在较小程度上)最佳霍夫曼 tables.
的函数您的编码器使用 "quality" 参数做什么是任何人的猜测。