有一个具有一定高度和宽度的位图,有没有办法将此位图中的所有WHITE颜色区域设置为透明?
答案 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()方法时遇到错误或只是一个不同的颜色在位图上。然后我只是使用嵌套循环遍历它,因为我有两个维度,那就是它!