2014-02-06 3 views
0

У меня есть растровое изображение с несколькими лицами. Я хочу выделить каждое лицо таким образом, чтобы прямые лица имели исходный цвет, а остальная часть области была затемнена.Как использовать Canvas.clipRects для выделения прямых прямых?

я сделал что-то вроде,

    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

Там может быть лучше, но попробуйте это:

   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); 

Примечание: Я на самом деле не запускать это. Но его здание - один большой отсекающий регион, состоящий из всех исправлений, которые вы хотите сохранить. Затем создается клип, состоящий из всего растрового изображения, за исключением областей, которые вы хотите сохранить. Затем его окраска части, которую вы не хотите держать.

+0

Nope. Не повезло ! – user2453055