关于图片大小的理解

A:透明度

R:红色

G:绿

B:蓝

Bitmap.Config ARGB_4444:每个像素占四位,即A=4,R=4,G=4,B=4,那么一个像素点占4+4+4+4=16位 

Bitmap.Config ARGB_8888:每个像素占四位,即A=8,R=8,G=8,B=8,那么一个像素点占8+8+8+8=32位

Bitmap.Config RGB_565:每个像素占四位,即R=5,G=6,B=5,没有透明度,那么一个像素点占5+6+5=16位

Bitmap.Config ALPHA_8:每个像素占四位,只有透明度,没有颜色。

一般情况下我们都是使用的ARGB_8888,由此可知它是最占内存的,因为一个像素占32位,8位=1字节,所以一个像素占4字节的内存。假设有一张480x800的图片,如果格式为ARGB_8888,那么将会占用1500KB的内存

   android.graphics.Bitmap.Config是一个枚举类型,里面定义了位图的四种格式.起初有点奇怪,网上查了一下,大概指定了类型名字怪怪的缘由.

    从名字中可以看出:

    ALPHA_8:数字为8,图形参数应该由一个字节来表示,应该是一种8位的位图

    ARGB_4444:4+4+4+4=16,图形的参数应该由两个字节来表示,应该是一种16位的位图.

    ARGB_8888:8+8+8+8=32,图形的参数应该由四个字节来表示,应该是一种32位的位图.

    RGB_565:5+6+5=16,图形的参数应该由两个字节来表示,应该是一种16位的位图.

 

    网上讲,ALPHA_8,ARGB_4444,ARGB_8888都是透明的位图,也就是所字母A代表透明.

    ARGB_4444:意味着有四个参数,即A,R,G,B,每一个参数由4bit表示.

    同理:

    ARGB_8888:意味着有四个参数,即A,R,G,B,每一个参数由8bit来表示.

    同理:

    RGB_565:意味着有三个参数,R,G,B,三个参数分别占5bit,6bit,5bit.

关键:

 ARGB8888占将近8M  565占4m左右,以后做的时候都需要随时小心OOM啊。这有点吓人啊。

你可能感兴趣的:(关于图片大小的理解)