我们在电脑上看到的 png 格式或者 jpg 格式的图片,png(jpg) 只是这张图片的容器,它们是经过相对应的压缩算法将原图每个像素点信息转换用另一种数据格式表示,以此达到压缩目的,减少图片文件大小。而当我们通过代码,将这张图片加载进内存时,会先解析图片文件本身的数据格式,然后还原为位图,也就是 Bitmap 对象,Bitmap 的大小取决于像素点的数据格式以及分辨率两者。
结论:
- 占用内存大小的计算公式:分辨率 * 像素点大小;Android中像素点大小有:
1 | /** |
- 同一张图放在不同地方分辨率不一样,不同res目录占用内存大小不一样。本地磁盘、网络等按照原图的分辨率来计算;res目录中的图片,分辨率会进行转换,规则如下:
新分辨率=原图横向分辨率(设备dpi/目录对应的dpi)原图纵向分辨率*(设备的dpi/目录对应的dpi)
优化内存的方法:
- 设置像素点的使用方式,比如使用RGB_565
- 降低分辨率inSampleSize