【问题标题】:PNGs using more memory than GIFsPNGS使用比GIF更多的内存
【发布时间】:2013-04-11 23:22:57
【问题描述】:

我创建了一个使用大量 GIF 的 Android 应用。我收到了一些关于 Galaxy S III 上没有显示图像的反馈,我通过这篇文章意识到我的 GIF 是问题所在:Images not loading on Galaxy S3

但我有一个担忧。我从一篇文章中借了一些代码来告诉我我正在使用多少内存。当我使用 GIF 时,我会得到这样的值:

I/memory  (  547): App Memory: Pss=12.15 MB
I/memory  (  547): Private=10.52 MB
I/memory  (  547): Shared=8.47 MB

当我切换到 PNG 时,我得到的值如下:

I/memory  (  547): App Memory: Pss=21.33 MB
I/memory  (  547): Private=20.18 MB
I/memory  (  547): Shared=14.02 MB

为什么在使用 PNG 时内存使用量要高得多?

我有 110 张图片,大小从 75x75 到 1048x907(1KB 到 148KB)不等。 GIF 的总大小为 1.39MB,PNG 的总大小 = 1.48MB。至于压缩,我使用 Paint.NET 来保存它们并使用“自动检测”作为位深度。

编辑:我回去看了看,大部分图像都保存为 8 位、256 色。

我猜 GIF 占用更少的磁盘空间这一事实是令人困惑的部分。看起来 Android 应该更轻松地处理 PNG。

我正在使用表面视图并调用 canvas.drawBitmap

【问题讨论】:

  • 嗯,这是图像大小和分辨率的典型问题。假设它们相同,PNG 图像可以支持具有透明度的 32 位图像。你知道你的PNG图像是多少位吗?据我所知,我认为最低的 PNG(8 位)应该相当于 GIF。
  • 在查看内存使用情况之前比较普通图像大小(文件)怎么样?

标签: android image png gif formats


【解决方案1】:

您的图片有多大?两者似乎有所不同......如果图像很小,比如 10px x 10px,那么 GIF 通常会变小。对于较大的图像,PNG(几乎?)总是较小的文件大小。

一般来说,我总是将 PNG 用于重要的资产,比如游戏中的玩家、按钮等。而 JPEG 用于背景等。

您是如何压缩 PNG 的?如果有的话?

【讨论】:

  • 我有 110 张图片,大小从 75x75 到 1048x907(1KB 到 148KB)不等。 GIF 的总大小为 1.39MB,PNG 的总大小 = 1.48MB。至于压缩,我使用 Paint.NET 来保存它们并使用“自动检测”作为位深度。
  • 我猜 GIF 占用更少的磁盘空间这一事实是令人困惑的部分。看起来 Android 应该更轻松地处理 PNG。
  • 我正在使用表面视图并调用 canvas.drawBitmap
  • 尝试将 PNG 图像设置为调色板(256 色) - 只有这样您才能与 GIF 进行比较。或使用 PNGOUT 保存(例如,通过 Irfanview)
猜你喜欢
  • 2017-01-28
  • 2013-11-14
  • 2014-11-23
  • 1970-01-01
  • 1970-01-01
  • 2019-06-04
  • 1970-01-01
  • 2011-03-31
相关资源
最近更新 更多