我有一个包含多个面的位图。我想要突出显示每个面部,使面部具有原始颜色,并且该区域的其余部分被涂黑。
我做了类似的事,
for(int i=0; i<getNumFaces(); i++)
{
Rect rect = getRect();
canvas = new Canvas(mutableBitmap);
canvas.clipRect(rect, Region.Op.DIFFERENCE);
canvas.drawColor(Color.BLACK, Mode.SRC_ATOP);
}
confirmationView.setImageBitmap(mutableBitmap);
但是这使我的整个图像变黑。我知道原因,但无法找到解决方案。
答案 0 :(得分:0)
可能有更好的方法,但试试这个:
canvas = new Canvas(mutableBitmap);
for(int i=0; i<getNumFaces(); i++)
{
Rect rect = getRect();
canvas.clipRect(rect, Region.Op.UNION);
}
Rect all = new Rect(0,0,mutableBitmap.getWidth(), mutableBitmap.getHeight());
canvas.clipRect(all , Region.Op.DIFFERENCE);
canvas.drawColor(Color.BLACK);
confirmationView.setImageBitmap(mutableBitmap);
注意:我实际上并没有运行它。但它建立了一个大的剪辑区域,包括你想要保留的所有角色。然后它创建一个包含所有位图的剪辑,除了你想要保留的区域。然后着色你不想留下的部分。