【问题标题】:Image compression and CPU usage图像压缩和 CPU 使用率
【发布时间】:2020-10-03 19:27:53
【问题描述】:
Android 和具有 Compress 方法 (see here) 的 Bitmap 类。
Compress 有一个quality parameter。根据文档,压缩为JPEG时:
压缩为 JPEG 格式。质量为 0 表示压缩为
最小的尺寸。 100 表示压缩以获得最大视觉质量。
我的问题是:使用较高的值(例如 100)会比较低的值(例如 50)使用更多的 CPU(即花费更长的时间)吗?
我希望答案是,“是的,因为进行更多压缩需要更长的时间”......但我真的不知道。
【问题讨论】:
标签:
android
bitmap
image-compression
【解决方案1】:
在 Jpeg 中,更高的质量意味着更少的压缩,因此更少的 CPU 使用率。
更高的质量并不意味着它会使照片更好,这是一种误解。在 Jpeg 中,更高质量意味着不要压缩太多并尽可能保持与原始照片接近的质量。压缩会降低当前质量。
接近 100 意味着更少的压缩以保持质量,因此它使用更少的 CPU 时间,因为它需要更少的压缩。
接近 0 意味着更多的压缩以换取质量,因此它使用更多的 CPU 时间,因为它需要更多的压缩。
- 更多压缩(方向为 0)= 质量更低、文件更小、CPU 使用率更高。
- 更少的压缩(方向为 100)= 更高的质量、更大的文件大小、更少的 CPU 使用率。
您需要考虑的是,在 Android 中 Jpeg 压缩是在 C/C++ 中本地实现的,因此速度非常快。因此,考虑到您应该在后台线程中压缩以获得最佳性能,CPU 时间并不是一个需要过多考虑的重要因素。
此外,您应该避免在大多数情况下使用 100% 质量,最好是 80% 到 95% 之间的任何值。
100% 质量意味着根本没有压缩(因此质量最好),但因此可能会产生巨大的文件。