2013-12-23 67 views
0

我希望能夠使用以下圖像來屏蔽其他位圖。所以基本上,我試圖獲得蒙版圖像,並用另一個位圖替換它的黑色內容。像這樣的例子:如何在Android中僅屏蔽某些位圖的某些部分

This is the mask This is the final result

我能夠使用這種面膜和創建原始位圖的圓形版本,但不保留它周圍是橙色邊框。有關我如何能夠實現這種效果的任何想法?謝謝。

,我使用(即只創建一個圓圖)的代碼如下:

private static Bitmap applyMask(ImageView imageView, Bitmap mainImage) { 
    Canvas canvas = new Canvas(); 

    Bitmap result result = Bitmap.createBitmap(50, 50, Bitmap.Config.ARGB_8888);    

    canvas.setBitmap(result); 
    Paint paint = new Paint(); 

    // resize image fills the whole canvas 
    canvas.drawBitmap(mainImage, null, new Rect(0, 0, 50, 50), paint); 

    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN)); 
    canvas.drawBitmap(sMaskImage, 0, 0, paint); 
    paint.setXfermode(null); 

    return result; 
} 
+0

您可以添加目前使用的代碼嗎 –

回答

1

我用下面剪斷設置屏蔽圖像的代碼,該樣本「BM」是我的位圖和「mMaskSource 「是我的可繪製文件夾中掩碼對象位置的資源ID。

Bitmap mask = BitmapFactory.decodeResource(getResources(), mMaskSource); 
Bitmap result = Bitmap.createBitmap(mask.getWidth(), mask.getHeight(), 
      Config.ARGB_8888); 
Canvas mCanvas = new Canvas(result); 
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); 
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN)); 
bm = Bitmap.createScaledBitmap(bm, mask.getWidth(), mask.getHeight(), 
      true); 
mCanvas.drawBitmap(bm, 0, 0, null); 
mCanvas.drawBitmap(mask, 0, 0, paint); 
paint.setXfermode(null); 

最後你可以使用「結果」位圖對象,但是你希望。

+0

謝謝,但是這將與我上面的代碼具有相同的結果。它會產生一個圓形圖像,而不是保留蒙版中包含的橙色邊框。 – Henrique

+0

我的不好,我誤解我猜...但我也做了一些simillar,所以我建議你把兩個圖像瀏覽一個橙色圓圈,第二個是你的圓形圖像。將它們的大小設置爲相同,但在內部填充一些填充。 – yahya