图像压缩和CPU使用率

问题描述

Android和具有Bitmap方法see here)的Compress类。

Compress有一个quality parameter。根据文档,压缩为JPEG时:

压缩为JPEG格式。质量0表示压缩 最小的尺寸。 100表示​​压缩以获得最大视觉质量。

我的问题是:使用较高的值(例如100)会比使用较低的值(例如50)使用更多的cpu(即花费更长的时间)吗?

我希望答案是“是的,因为进行更多压缩需要更长的时间” ...但是我真的不知道。

解决方法

在Jpeg中,质量越高意味着压缩越少,因此CPU使用率就越低。

更高的质量并不意味着它将使照片更好,这是一种误解。在Jpeg中,更高的质量意味着不要压缩太多,并保持尽可能接近原始照片的质量。压缩会降低当前的质量。

迈向100意味着减少压缩以保持质量,因此使用更少的CPU时间,因为它需要更少的压缩。 趋近于0,意味着要进行质量交换时要进行更多的压缩,因此它需要花费更多的CPU时间来进行更多压缩。

  • 更高的压缩率(指向0的方向)=质量降低,文件大小更小,CPU使用率更高。
  • 较少压缩(指向100)=质量更高,文件更大,CPU使用率更低。

您需要考虑的是,在Android Jpeg中压缩是在C / C ++中本地实现的,因此速度非常快。因此,考虑到应该压缩以在后台线程中获得最佳性能,CPU时间并不是要考虑的主要因素。

在大多数情况下,您也应避免使用100%的质量,最好将80%到95%之间的任何值都设为最佳。

100%的质量意味着完全没有压缩(因此是最佳质量),但是因此有可能产生巨大的文件。