计算Bitmap占用的内存大小

参考资料

Android开发绕不过的坑:你的Bitmap究竟占多大内存?

相关因素

Bitmap 在内存当中占用的大小其实取决于:

  • 色彩格式,前面我们已经提到,如果是 ARGB8888 那么就是一个像素4个字节,如果是 RGB565 那就是2个字节
  • 原始文件存放的资源目录
  • 目标屏幕的密度(所以同等条件下,红米在资源方面消耗的内存肯定是要小于三星S6的)

计算公式

int realWidth = (int) (rawWidth * targetDensity / (float) rawDensity + 0.5f)
int realHeight = (int) (rawHeight * targetDensity / (float) rawDensity + 0.5f) 
int memory = realWidth * realHeight * bytes_for_current_colorMode;
  • rawWidth就是资源图片的原始宽度
  • targetDensity就是当前屏幕的density
  • rawDensity就是资源图片所在的资源文件夹对应的density
  • bytes_for_current_colorMode就是当前色彩格式下每个像素对应的字节数

BitmapFactory.Options:

If set to a value > 1, requests the decoder to subsample the original image, returning a smaller image to save memory.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容