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

来源:互联网 发布:php 直播间 编辑:程序博客网 时间:2024/05/23 07:25

如果有需要 设置上层不带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通道来实现透明的。

0 0
原创粉丝点击