Android和一个具有Compress
方法的Bitmap
类(请参阅此处(。
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%的质量意味着根本没有压缩(因此是最好的质量(,但因此可能会产生巨大的文件。