美文网首页Android干货Android理论
android bitmap(一) ARGB_8888/RGB_

android bitmap(一) ARGB_8888/RGB_

作者: 合肥黑 | 来源:发表于2016-07-22 14:26 被阅读876次

    参考
    (Bitmap)ARGB_8888/RGB_565/ALPHA_8/ARGB_4444详解
    ALPHA_8、ARGB_4444、ARGB_8888、RGB_565等图片格式的使用说明

    打开Android.graphics.Bitmap类里有一个内部类Bitmap.Config类,在Bitmap类里createBitmap(int width, int height, Bitmap.Config config)方法里会用到,打开个这个类一看

    枚举变量
    public static final Bitmap.Config ALPHA_8
    public static final Bitmap.Config ARGB_4444
    public static final Bitmap.Config ARGB_8888
    public static final Bitmap.Config RGB_565

    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的内存。

    那么对bitmap有何影响?
    这里都以ARGB_8888为基准来进行对比。
    ARGB_4444:内存占用减少一半,但是每个值图片失真度很严重,这个参数本身已经不推荐使用了。
    RGB_565:内存占用减少一半,舍弃了透明度,同时三色值也有部分损失,但是图片失真度很小。
    ALPHA_8:内存占用没有减少!按注释的解释个人理解应该是减少3/4的内存占用,而且图片与ARGB_8888下的没有区别。
    (ALPHA_8查到的资料不多,希望有高手可以帮我解惑)

    总结:
    由于ARGB_4444不推荐使用和ALPHA_8效果不明。我们大多数是用的还是ARGB_8888和RGB_565。
    RGB_565能够在保证图片质量的情况下大大减少内存的开销,是解决oom的一种方法。但是一定要注意RGB_565是没有透明度的,如果图片本身需要保留透明度,那么就不能使用RGB_565。

    在游戏应用中,要根据具体的使用要求来进行使用。例如一张地图,肯定不会出现空白透明的地方,所以可以选用不带alpha通道的格式。把地图,改成RGB_565这一类,没有透明度的图片,缩小了很多。而人物,肯定会有透明的地方。然后我们还有把一些后期功能,不重要的功能,例如一些小怪,压缩,从像素上压缩。还有图片重用,在这个副本是大boss,下一个副本是小怪。把60级以后的图片删除掉,玩家玩到某个节点的时候,就提示要求玩家点击下载新的包。或者在游戏过程中,也偷偷下载新的图片。

    相关文章

      网友评论

      • Hans小木屋:ALPHA_8在android文档上写一个像素占一个byte,怎么会和ARGB_8888占用空间一样呢?

        "Bitmap.Config ALPHA_8
        Each pixel is stored as a single translucency (alpha) channel. This is very useful to efficiently store masks for instance. No color information is stored. With this configuration, each pixel requires 1 byte of memory."

      本文标题:android bitmap(一) ARGB_8888/RGB_

      本文链接:https://www.haomeiwen.com/subject/hvsijttx.html