如何将位图指定的颜色区域设置为透明?

时间:2013-07-23 05:00:48

标签: android bitmap

有一个具有一定高度和宽度的位图,有没有办法将此位图中的所有WHITE颜色区域设置为透明?

1 个答案:

答案 0 :(得分:0)

是的,实际上有一种非常简单的方法: 只需遍历您的位图并检查像素是否为白色,如果它是透明的,则为alpha透明色,以下是代码:

class DrawingView extends View {
     Bitmap myBitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_4444);

     @Override
     public void onDraw(Canvas canvas) {
            myBitmap = findAllWhiteAndClear(myBitmap);
            canvas.drawBitmap(myBitmap, 0, 0, null); // draw result
     }

     private Bitmap findAllWhiteAndClear(Bitmap someBitmap) {
         int color = Color.WHITE;
         int width = someBitmap.getWidth()-1;
         int height = someBitmap.getHeight()-1;
         // loop going from up to down and on to the next column and repeat...
         for(int w = 0; i < width; ++w) {
             for(int j = 0; j < height; ++j) {
                 if(someBitmap.getPixel(w, j) == color) {
                     someBitmap.setPixel(w, j, Color.TRANSPARENT); // set any white pixels to a color to transparent
                 }
             }
         }
         return someBitmap;
    }
}

所以在这里我用一个配置初始化一些位图,它可以存储透明像素,否则如果Bitmap.Config是Bitmap.Config.RBG_565,你会在尝试调用setPixels()方法时遇到错误或只是一个不同的颜色在位图上。然后我只是使用嵌套循环遍历它,因为我有两个维度,那就是它!