Android的Bitmap

346 阅读2分钟

Bitmap定义

Bitmap是由像素(Pixel)组成的,像素是位图最小的信息单元,存储在图像栅格中。每个像素都具有特定的位置和颜色值。按从左到右、从上到下的顺序来记录图像中每一个像素的信息,如:像素在屏幕上的位置、像素的颜色等。位图图像质量是由单位长度内像素的多少来决定的。单位长度内像素越多,分辨率越高,图像的效果越好。位图也称为“位图图像”“点阵图像”“数据图像”“数码图像”。一个像素点可以由1,4,16,24,32bit来表示,像素点的色彩越丰富,自然图像的效果就越好了。位图文件是非压缩格式的,需要占用较大存储空间。位图文件概念来自于Windows,是Windows的标准图形文件。位图文件(注意是位图文件)的后缀一般是**.bmp或者.dib** 位图文件不等于位图 位图文件相当于一个容器,位图存在于位图文件之中,系统在加载位图时会先解析位图文件,还原位图,最后将位图加载到内存中其结构如图:

色深和色位

  • 色深:表示一个像素点可以有多少种色彩来描述,它的单位是bit,拿位图而言,其支持RGB各8bit,所以说位图的色深为24bit。
  • 位深:位深主要表示存储每个像素所用的位数,主要用于实际图像文件的存储。

Android图片格式

实际上bitmap所占内存大小还与实际情况有关,bitmap所占内存大小不等于计算大小,不同设备所占内存大小不同,相同设备不同Drawable所占内存大小也不相同原因是系统在加载Drawable的图片时会作一次分辨率的调整,其过程如下:
    现在高度 = 原来高度*(屏幕分辨率/Drawable的分辨率)
    现在宽度 = 原来宽度*(屏幕分辨率/Drawable的分辨率)
从以上的公式就可以看出,Drawable分辨率越高,长宽会减小,所以所占的内存空间越小.

bitmap所占内存大小总结

  • 同一张图片,在分辨率越高的Drawable中加载到内存中所占的内存越小
  • 同一张图片,屏幕分辨率越高所占的内存就会越高
  • 同等条件下,图片大小与imageview没有关系
  • 同等条件下,加载到内存的图片大小与图片格式没有关系

参考文章


cloud.tencent.com/developer/a…
my.oschina.net/u/3863980/b…