有一个具有一定高度和宽度的位图,有没有办法将这个位图中的所有白色区域设置为透明?
问问题
77 次
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 回答