图像压缩和 CPU 用法
Image compression and CPU usage
Android 和一个 Bitmap
class 有一个 Compress
方法 (see here).
Compress 有一个 quality parameter
。根据文档,压缩为 JPEG 时:
Compress to the JPEG format. quality of 0 means compress for the
smallest size. 100 means compress for max visual quality.
我的问题是:使用较高的值(例如 100)会比使用较低的值(例如 50)使用更多 CPU(即需要更长的时间)吗?
我希望答案是“是的,因为做更多的压缩需要更长的时间”......但我真的不知道。
在 Jpeg 中,更高的质量意味着更少的压缩,因此更少 CPU 使用。
更高的质量并不意味着它会使照片更好,这是一种误解。在 Jpeg 中,更高的质量意味着 不要压缩太多并尽可能保持与原始照片接近的质量。压缩会降低当前质量。
接近 100 意味着更少的压缩以保持质量,因此它使用更少的 CPU 时间,因为它需要更少的压缩。
接近 0,意味着更多压缩以换取质量,因此它使用更多 CPU 时间,因为它需要更多压缩。
- 更多压缩(方向为 0)= 质量较低、文件较小、CPU 使用率较高。
- 更少压缩(方向为 100)= 更高质量、更大文件大小、更少 CPU 使用。
您需要考虑的是,在 Android 中,Jpeg 压缩是在 C/C++ 中本地实现的,因此非常快。因此 CPU 时间不是一个需要考虑的重要因素,考虑到您应该在后台线程中压缩以获得最佳性能。
此外,在大多数情况下,您应该避免使用 100% 质量,最好是 80% 到 95% 之间的任何值。
100% 质量意味着完全没有压缩(因此质量最好),但因此可能会产生巨大的文件。
Android 和一个 Bitmap
class 有一个 Compress
方法 (see here).
Compress 有一个 quality parameter
。根据文档,压缩为 JPEG 时:
Compress to the JPEG format. quality of 0 means compress for the smallest size. 100 means compress for max visual quality.
我的问题是:使用较高的值(例如 100)会比使用较低的值(例如 50)使用更多 CPU(即需要更长的时间)吗?
我希望答案是“是的,因为做更多的压缩需要更长的时间”......但我真的不知道。
在 Jpeg 中,更高的质量意味着更少的压缩,因此更少 CPU 使用。
更高的质量并不意味着它会使照片更好,这是一种误解。在 Jpeg 中,更高的质量意味着 不要压缩太多并尽可能保持与原始照片接近的质量。压缩会降低当前质量。
接近 100 意味着更少的压缩以保持质量,因此它使用更少的 CPU 时间,因为它需要更少的压缩。 接近 0,意味着更多压缩以换取质量,因此它使用更多 CPU 时间,因为它需要更多压缩。
- 更多压缩(方向为 0)= 质量较低、文件较小、CPU 使用率较高。
- 更少压缩(方向为 100)= 更高质量、更大文件大小、更少 CPU 使用。
您需要考虑的是,在 Android 中,Jpeg 压缩是在 C/C++ 中本地实现的,因此非常快。因此 CPU 时间不是一个需要考虑的重要因素,考虑到您应该在后台线程中压缩以获得最佳性能。
此外,在大多数情况下,您应该避免使用 100% 质量,最好是 80% 到 95% 之间的任何值。
100% 质量意味着完全没有压缩(因此质量最好),但因此可能会产生巨大的文件。