1. public Bitmap extractAlpha()java
生成只提取了原图的alpha通道的新图,也就是说新的bitmap只有alpha值,rgb值为0。这个函数的做用是获取原图的轮廓,而后能够填充rgb值。所以能够实现阴影,影子,光晕等效果。canvas
使用以下的代码片断来验证这个函数:函数
public Bitmap process() { Bitmap destImage = Bitmap.createBitmap(400, 400, Config.ARGB_8888); int color = 0xAFFF0000; //半透明红色
//0x00FF0000 //透明红色
//0xFFFF0000 //不透明红色 for(int i = 0; i < destImage.getWidth(); i++){ for(int j = 0; j < destImage.getHeight(); j++){ destImage.setPixel(i, j, color);//生成400x400分辨率的颜色为color的原图bitmap } } Log.d(TAG, "--" + TAG + ">>process>>"); return destImage.extractAlpha();//生成提取了原bitmap alpha通道的新图bitmap }
处理后的图片应用给无背景色的ImageView,ImageView所在的容器以淡绿色做背景。3d
从上面的三组处理结果能够得出结论:blog
(1)该函数只提取aplha通道,rgb通道值为0。这是由于原图是红色,新图只有透明通道。图片
(2)新图保留了原图的alpha通道值,原图若是是半透明的,新图也是半透明的,如图一,原图是透明的,新图也是透明的,如图二,原图是不透明的,新图也不透明,如图三。get
这样获得的绘制到canvas上时,argb通道值会依据Paint的颜色值绘制。若是原bitmap没有alpha通道,实验结果如透明,说明新图alpha通道为0。it