【问题标题】:Why Bitmap size is bigger in memory than on disk in Android?为什么位图大小在内存中大于 Android 中的磁盘?
【发布时间】:2012-07-12 17:56:59
【问题描述】:

我的 SD 卡上有一个 2448x3264 的图像,占用 1,667,072 字节,但是当我将其加载为位图并使用 getRowBytes()*getHeight() 计算其大小时,我最终得到了 15,980,544 字节。

为什么会发生这种情况,如何计算文件的实际大小?

【问题讨论】:

  • 这张图片的格式是什么?
  • 格式为 jpeg。我认为 Devunwired 回答了它

标签: android memory bitmap size heap-memory


【解决方案1】:

这是因为图像在磁盘上时会被压缩(以 JPG、PNG 或类似格式存储)。一旦将图像加载到内存中,它就不再被压缩并占用所有像素所需的内存(对于 RGBA_8888,通常为宽 * 高 * 4,对于 RGB_565,通常为宽 * 高 * 2)。

【讨论】:

  • 好的,我现在明白了。只是为了确认我是否使用 bitmap.compress(Bitmap.CompressFormat format, int quality) 将位图压缩到 FileOutputStream 并再次读取位图,即使这样它也会提供大尺寸。对吗?
  • 正确,压缩图像只是一种文件存储格式。为了实际处理数据,必须将其膨胀回内存中的完整位图。
  • 我在 Android 上有一个 1024*600 的 img 被读入内存。我的计算结果是 1024*600*4 = ~3 MB,而 DDMS 告诉我它的内存是 4.2 MB,知道是什么导致了额外的开销吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-13
  • 2014-05-24
  • 2013-07-30
  • 1970-01-01
  • 2016-09-04
  • 2019-10-15
  • 2015-11-14
相关资源
最近更新 更多