美文网首页
Android 中的ARGB_4444、ARGB_8888和RG

Android 中的ARGB_4444、ARGB_8888和RG

作者: 大川的川 | 来源:发表于2019-10-17 16:43 被阅读0次
你瞅啥?

项目中用到了画布,画布中用到了drawBitmap来绘制背景图,当时设置的背景图片Bitmap.Config的类型是RGB_565,当运用canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);想实现背景透明的时候,发现出现了黑色的背景,而非我需要的透明,找了各种原因和尝试,发现跟Bitmap.Config的类型有关,RGB_565这个类型存储的只是颜色信息,没有透明度信息,所以设置透明度,会出现黑背景的效果!!!看了看别人总结的,这里做个记录,为自己增加印象!

在Android的Bitmap.Config中有四个枚举类型:
- ALPHA_8
- ARGB_4444
- ARGB_8888
- RGB_565

1.ALPHA_8:每个像素都需要1(8位)个字节的内存,只存储位图的透明度,没有颜色信息

2.ARGB_4444:A(Alpha)占4位的精度,R(Red)占4位的精度,G(Green)占4位的精度,B(Blue)占4位的精度,加起来一共是16位的精度,折合是2个字节,也就是一个像素占两个字节的内存,同时存储位图的透明度和颜色信息。不过由于该精度的位图质量较差,官方不推荐使用

3.ARGB_8888:这个类型的跟ARGB_4444的原理是一样的,只是A,R,G,B各占8个位的精度,所以一个像素占4个字节的内存。由于该类型的位图质量较好,官方特别推荐使用。但是,如果一个480800的位图设置了此类型,那个它占用的内存空间是:4808004/(10241024)=1.5M

4.RGB_565:同理,R占5位精度,G占6位精度,B占5位精度,一共是16位精度,折合两个字节。这里注意的是,这个类型存储的只是颜色信息,没有透明度信息

Glide的解码格式是RGB565,Picasso是ARGB8888 ,所以同一个图片,picasso更清晰,但是更耗内存。

信息来源

相关文章

网友评论

      本文标题:Android 中的ARGB_4444、ARGB_8888和RG

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