安卓实现BMP过滤某颜色显示或者透明显示的方法
2014-05-17 17:00
1666 查看
如果有需要 设置上层不带alpha通道的bitmap的某种颜色为透明,从而显示被此颜色掩盖的下层那些像素的需求 的人可以参考一下我的方法,没有技术含量,但是可用。
下面是截取代码里的小段,原始的bitmap是通过自写文件头然后读取文件中的图像数据生成图片字节数组,再由BitmapFactory.decodeByteArray方法产生的(这个文件是由很多张RGB565的BMP图片去掉文件头后组成的),所以我这个bitmap没有alpha通道。
思路是通过此bitmap的copy方法创建一个可编辑的带通道bitmap,遍历需要透明处理的颜色,设置alpha通道为0,然后配合paint.setalpha就可以实现透明或者过滤效果了。
可以看出,paint是配合bitmap的alpha通道来实现透明的。
下面是截取代码里的小段,原始的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通道来实现透明的。
相关文章推荐
- destoon实现不同会员组公司名称显示不同的颜色的方法
- shell脚本中echo显示内容带颜色的实现方法
- JS实现控制表格只显示行边框或者只显示列边框的方法
- shell脚本中echo显示内容带颜色的实现方法
- Android 中实现0张,或者多张图片显示的方法
- 用Java实现颜色透明值混算的一种方法
- 半透明或过滤某种颜色的实现
- javascript实现table选中的行以指定颜色高亮显示的方法
- jQuery实现表格颜色交替显示的方法
- Xamarin 中开发Android实现全屏或者不显示标题栏的方法-宋兴柱
- android应用程序,使用不同方法,在activity之中隐藏Title,或者实现FullScreen(隐藏通知栏)显示。
- destoon实现不同会员组公司名称显示不同的颜色的方法
- shell脚本中echo显示内容带颜色的实现方法
- javascript实现table选中的行以指定颜色高亮显示的方法
- 一个简单方法实现bmp背景透明
- ie6实现png图片透明显示的方法
- Flex Image控件显示BMP图片实现方法
- Delphi实现Listbox中的item根据内容显示不同颜色的方法
- Android实现全屏显示的方法 固定横屏或者竖屏的方法