(2)Bitmap类相关——extractAlpha

1. public Bitmap extractAlpha()

生成只提取了原图的alpha通道的新图,也就是说新的bitmap只有alpha值,rgb值为0。这个函数的作用是获取原图的轮廓,然后可以填充rgb值。因此可以实现阴影,影子,光晕等效果。

使用如下的代码片段来验证这个函数:

1
2
3
4
5
6
7
8
9
10
11
12
public Bitmap process() {
    Bitmap destImage = Bitmap.createBitmap(400,
            400, Config.ARGB_8888);
    int color = 0xAFFF0000; //半透明红色<br>            //0x00FF0000 //透明红色<br>            //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所在的容器以淡绿色作背景。

从上面的三组处理结果可以得出结论:

(1)该函数只提取aplha通道,rgb通道值为0。这是因为原图是红色,新图只有透明通道。

(2)新图保留了原图的alpha通道值,原图如果是半透明的,新图也是半透明的,如图一,原图是透明的,新图也是透明的,如图二,原图是不透明的,新图也不透明,如图三。

 

这样得到的绘制到canvas上时,argb通道值会依据Paint的颜色值绘制。如果原bitmap没有alpha通道,实验结果如透明,说明新图alpha通道为0。

posted on   Matrixin  阅读(1841)  评论(0编辑  收藏  举报

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示