2013-06-03 58 views
17

我一直在玩Android Bitmaps,并发现,PNG压缩需要比甚至最高质量的JPEG更多的时间。更多。在我的设备上,它可以大致长达10秒,以反对1.为什么在Android上PNG压缩比JPEG要慢得多?

AFAIK,PNG基本上是用deflate压缩过的像素字符串。那么,为每个字符串找到最好的过滤器可能是耗时的任务,但是速度和压缩效率之间可能会有妥协。它不应该比JPEG更慢。它是怎么回事?

也许这是相反的方式。 Android上有一些超快的JPEG实现吗?

更新:我真的只是做这样的事情

mBitmap.compress(CompressFormat.JPEG, 100, stream); 

mBitmap.compress(CompressFormat.PNG, 100, stream); 
+1

你应该放一些代码来展示你如何压缩。 –

+21

JPEG可以被硬件加速,PNG总是以软件完成。 JPEG需要一段时间来处理。编码和解码PNG时间的90%以上花费在扁平编解码器中。过滤只需要很少的时间。在最高质量级别进行缩减需要很长时间,因为它会尝试多种方法来获得最佳压缩。 – BitBank

+0

实际上,Skia确实支持JPEG硬件加速。然后我应该在模拟器上检查我的代码。如果性能差距降低,那一定是它。 – akalenuk

回答

5

我测试过我的项目上仿真器更大的图片,虽然PNG压缩是慢一点,也没有性能差异很大。因此,它应该是由于硬件加速,正如评论中的BitBank所述。

相关问题