图片内存大小和图片文件占用空间大小是没有必然关系,但是一般来说图片文件大小,图片内存大小就越大。占用空间是在磁盘上占用的空间,内存大小是加载到内存中占用的内存大小。
现在假如有一个图片是600*800的,文件大小100KB。
图片内存大小的计算公式是 :图片高度 * 图片宽度 * 一个像素占用的字节数
也就是 600 * 800 * 4 byte = 1875KB = 1.83M
而一个像素占用的字节数与图片的编码格式(或者叫bitmap在内存中的存储形式)有关
编码格式 | 解释 | 备注 |
---|---|---|
ALPHA_8 | 用一个8位存储alpha 所以占用一字节 | |
ARGB_4444 | alpha red green blue 各4位 所以占用两字节 | 因为质量太差不被推荐用 |
ARGB_8888 | alpha red green blue 各8位 所以占用四字节 | 默认使用这种方法 |
RGB_565 | red 5位 green 6位 blue5位 两字节 | 如果不涉及到透明度,用这种节省一半内存,不过又好像在4.0以上不能使用,再考究 |
自然是位数越多显示的效果越好
图片所在目录对内存的影响?
在Android中,图片的存放目录和手机的屏幕密度影响图片最终的大小,举个例子:
假设我们的图片放到xhdpi目录下,那么我们本文中的图片占用的内存大小如下:
屏幕密度为2的设备:800 * 600 * 4byte = 1.83M
屏幕密度为3的设备:800 * 1.5 * 600 * 1.5 * 4byte = 1.83 * 2.25M = 4.12M
所以,计算图片占用内存大小的时候,要考虑图片所在的目录跟设备密度,这两个因素其实影响的是图片的高宽,android会对图片进行拉升跟压缩。
也有说和目录无关还需考究
网友评论