您的位置:首页 > 其它

安卓实现BMP过滤某颜色显示或者透明显示的方法

2014-05-17 17:00 1666 查看
如果有需要 设置上层不带alpha通道的bitmap的某种颜色为透明,从而显示被此颜色掩盖的下层那些像素的需求 的人可以参考一下我的方法,没有技术含量,但是可用。

下面是截取代码里的小段,原始的bitmap是通过自写文件头然后读取文件中的图像数据生成图片字节数组,再由BitmapFactory.decodeByteArray方法产生的(这个文件是由很多张RGB565的BMP图片去掉文件头后组成的),所以我这个bitmap没有alpha通道。

思路是通过此bitmap的copy方法创建一个可编辑的带通道bitmap,遍历需要透明处理的颜色,设置alpha通道为0,然后配合paint.setalpha就可以实现透明或者过滤效果了。

Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapbyte, 0, bitmapbyte.length, bmpFactoryOptions);//源图片
Bitmap bitmappic = bitmap.copy(Bitmap.Config.ARGB_8888 ,true);//isMutable = true;
int Width = bitmappic.getWidth();
int Height = bitmappic.getHeight();
int color;
for (int px=0;px<Width;px++){
      for (int py=0;py<Height;py++){
             color = bitmappic.getPixel(px,py);
             if (color==0xfff800f8) bitmappic.setPixel(px, py, 0x00000000);//源图片copy操作之后我手动找了下,过滤色color值为0xf800f8
      }
}

//////////////////////////////////////////////
paint.setAlpha(250);//之后可以在可用的canvas里设置paint的alpha值,不要到255,高一点就好了
canvas.drawBitmap(bitmappic, 0, 0, paint);//如果背景有图片,就可以看到透明的效果了


可以看出,paint是配合bitmap的alpha通道来实现透明的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: