如何从其他位图剪切一个位图

时间:2012-03-12 15:13:30

标签: android bitmap

我需要从Bitmap2中剪切Bitmap1 .. 例如,我有Bitmap1(从Resources drawable解码)和Bitmap2(也可以从Resources drawable解码)。

Bitmap1:

|   |
 > <
|   |

Bitmap2:

|xxx|
|xxx|
|xxx|

我需要结果:

|xxx|
 >x<
|xxx|

有人可以给我示例代码吗?

机器人。

1 个答案:

答案 0 :(得分:3)

您可以加载两个位图并使用PorterDuffXfermodeDST_IN来屏蔽“Bitmap2”,有点像这样:

Bitmap bitmap2 = BitmapFactory.decodeResource(getResources(), R.drawable.bitmap2);
Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.bitmap1);
Bitmap bitmap2MaskedByBitmap1 = Bitmap.createBitmap(bitmap2.getWidth(), bitmap2.getHeight(), bitmap2.getConfig());
Canvas canvas = new Canvas(bitmap2MaskedByBitmap1);

Paint paint = new Paint();
paint.setFilterBitmap(false);

canvas.drawBitmap(bitmap2, 0, 0, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
canvas.drawBitmap(bitmap1, 0, 0, paint);
bitmap2.recycle();
bitmap1.recycle();

// bitmap2MaskedByBitmap1 should now contain the desired image
// as long as your Bitmap1 mask isn't sh-t.