Bitmap图片占用内存大小

一张图片(BitMap)占用的内存=图片长度图片宽度单位像素占用的字节数

创建一个BitMap时,其单位像素占用的字节数由其参数BitmapFactory.Options的inPreferredConfig变量决定。
inPreferredConfig为Bitmap.Config类型,Bitmap.Config类是个枚举类型,它可以为以下值:

Bitmap.Config : ARGB_8888
一个像素占用4个字节,alpha(A)值,Red(R)值,Green(G)值,Blue(B)值各占8个bites
共32bites,即4个字节

一张100100的图片占用内存的大小:
100
100*4=40000字节

另外,需要注意这里的图片占用内存是指在Navtive中占用的内存,当然BitMap使用的绝大多数内存就是该内存。因为我们可以简单的认为它就是BitMap所占用的内存。

在Android4.0之前,Bitmap的内存是分配在Native堆中,调用recycle()可以立即释放Native内存。
从Android4.0开始,Bitmap的内存就是分配在dalvik堆中,即JAVA堆中的,调用recycle()并不能立即释放Native内存。但是调用recycle()也是一个良好的习惯。

=================
资源文件中图片占用内存大小:
1b=8位
1kb=1024b
1mb=1024kb
1gb=1024mb

图片占用内存大小计算公式:

图片的像素长度width
图片的像素高度height
存放android手机drawable目录:dpi
mdpi=160
hdpi=240
xhdpi=320
xxhdpi=480
xxxhdpi=640
手机像素密度:phoneDpi

公式:width height (dpi/phoneDpi+0.5)2 * 4

总结,把图片生成Bitmap则和手机像素密度无关了,
因此公式为:width heigth 4

分享到 评论