1

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

4

1 回答 1

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() 方法时,您会收到错误或只是颜色不同. 然后我只是使用嵌套循环循环它,因为我有两个维度,就是这样!

于 2015-07-31T19:02:59.550 回答