【问题标题】:Why PNG compression is that much slower than JPEG on Android?为什么 Android 上的 PNG 压缩比 JPEG 慢得多?
【发布时间】:2013-05-29 12:04:51
【问题描述】:

我一直在玩弄 Android 位图,发现 PNG 压缩比最高质量的 JPEG 压缩需要更多的时间。更多。在我的设备上,相对于 1 而言,它可能大约长达 10 秒。

AFAIK,PNG 基本上是用 deflate 压缩的过滤像素字符串。好吧,为每个字符串找到最佳过滤器可能是一项耗时的任务,但在速度和压缩效率之间可能存在折衷。它不应该比JPEG慢。这是怎么回事?

也许情况正好相反。 Android 上是否有一些超快速的 JPEG 实现?

更新:我真的只是做类似的事情

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

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

【问题讨论】:

  • 你应该放一些代码来展示你是如何压缩的。
  • JPEG 可以硬件加速,PNG 总是在软件中完成。 JPEG 需要固定的时间来处理。 90+% 的 PNG 编码和解码时间都花在了 flate 编解码器上。过滤需要很短的时间。以最高质量级别进行放气需要很长时间,因为它会尝试多种方法来获得最佳压缩效果。
  • 其实Skia确实支持JPEG硬件加速。那我应该在模拟器上检查我的代码。如果性能差距缩小,那么一定是它。

标签: android performance png jpeg


【解决方案1】:

我已经用更大的图片在模拟器上测试了我的项目,虽然 PNG 压缩有点慢,但性能没有太大差异。因此,正如 BitBank 在评论中所说,这应该是由于硬件加速。

【讨论】:

  • 似乎 WEBP 比两者都慢,顺便说一句:issuetracker.google.com/issues/120109351
  • 我怀疑,webp 应该慢一点。它提供了更好的压缩比,所以这是一种权衡。
  • 我认为文件越大,你会发现它与PNG和JPG相比变得越来越慢。
猜你喜欢
  • 2013-01-26
  • 2011-03-29
  • 2013-03-24
  • 2020-04-29
  • 2018-10-21
  • 1970-01-01
  • 2017-12-26
  • 2011-01-25
  • 2012-12-20
相关资源
最近更新 更多