首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android Bit地图.Config的用法介绍

2013-10-28 
android Bitmap.Config的用法介绍? ? ?在了解Bitmap.Config之前,首先应该了解一下一种颜色的组成。简单的说

android Bitmap.Config的用法介绍

? ? ?在了解Bitmap.Config之前,首先应该了解一下一种颜色的组成。简单的说,世界上任何一种颜色的"颜色空间"都可定义成一个固定的数字或变量。RGB(红、绿、蓝)只是众多颜色空间的一种。采用这种编码方法,每种颜色都可用三个变量来表示-红色绿色以及蓝色的强度。? ? ??

? ? ?Bitmap.Config在官网中解释为:Bitmap的配置,用于描述和保存图片相素的保存方式。在android中其有四种:

? ? ? ?<1>ALPHA_8 像素以半透明的形式保存,且在内存中一个像素占8位,即一个字节。透明度为半透明,无法设置

? ? ?<2>ARGB_4444?引入了透明度的设置,A透明度 ?R 红色 G绿色 B蓝色,每种占4位,一个相素总共点16位,2个字节,此种方式占用内存较小,但图片会造成模糊现象。在API_leavel 13中已过时,被ARGB_8888代替。

? ? ?<3>ARGB_8888 解释同上,但一个相素点32位,4个字节。这种方式占用内存较多,但最清楚。

? ? ?<4>RGB_565 R 占5位,G 占6位 ,B 占5位,无法设置透明度,一个相素占16位,两个字节。

对于上述几种配置,视情况使用,占位越多,内存越大,但图像颜色越多。如RGB565最多只能表示2^16=65536种图像,这对于RGB888所能表示的2^24=16777216种颜色来说显然在表现力上要略逊一筹。这集中表现在显示某些带有渐变效果的图片时,出现了一条条的颜色带,而不是原始的平滑的渐变效果。后来得知android使用了Dither(抖动)这种技术,以欺骗人类眼球的方式加以补偿。

? ? ?

public static Bitmap drawableToBitmap(Drawable drawable) {         // 取 drawable 的长宽         int w = drawable.getIntrinsicWidth();         int h = drawable.getIntrinsicHeight();         // 取 drawable 的颜色格式         Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888                 : Bitmap.Config.RGB_565;         // 建立对应 bitmap         Bitmap bitmap = Bitmap.createBitmap(w, h, config);         // 建立对应 bitmap 的画布         Canvas canvas = new Canvas(bitmap);         drawable.setBounds(0, 0, w, h);         // 把 drawable 内容画到画布中         drawable.draw(canvas);         return bitmap;     }

?

?另外可参考资料

http://wangxuefang.iteye.com/admin/blogs/1956708? 关于位图颜色模式的一些android处理机制和说明。

热点排行