我有一个“多面具”位图,我需要使用其不同颜色的区域来分别屏蔽不同部分与另一个位图。
此代码是一个工作示例,但当然我在边缘上存在锯齿问题
// Bitmap bmpsrc - source bitmap to be masked
// Bitmap multimask - contains the colored masks
// Bitmap mask - selective mask depending on color range
int w=bmpsrc.getWidth();
int h=bmpsrc.getHeight();
Bitmap mask=Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
// rgb color range example, use dark gray 0x20 only
int rgb_min=0x00202020;
int rgb_max=0x00202020;
int r_min=rgb_min&0x00FF0000;
int r_max=rgb_max&0x00FF0000;
int g_min=rgb_min&0x0000FF00;
int g_max=rgb_max&0x0000FF00;
int b_min=rgb_min&0x000000FF;
int b_max=rgb_max&0x000000FF;
for (int x = 0; x < w; x++) {
for (int y = 0; y < h; y++) {
int color = multimask.getPixel(x, y);
int a=color>>>24; // discard sign (when alpha>0x7f color is negative!)
int r=color&0x00ff0000;
int g=color&0x0000ff00;
int b=color&0x000000ff;
if(
a>0&& // check alpha>0
r>=r_min&&r<=r_max&& // check r in range
g>=g_min&&g<=g_max&& // check g in range
b>=b_min&&b<=b_max // check b in range
) {
mask.setPixel(x, y, a<<24|0x00ff0000); // outputs mask
//mask.setPixel(x, y, a<<24|(0x00ffffff&bmpsrc.getPixel(x,y))); // outputs masked image
} else {
mask.setPixel(x, y, 0x00000000);
}
}
}
“多面具”图像
掩码示例,0xff202020颜色提取(别名)
蒙面图像,别名!
我的问题:
getPixel()
,但我需要逐个检查像素,我该如何使用getPixels()
?