安卓 - 从多个点裁剪图像

3
我需要裁剪一张位图,但是不仅仅是要得到一个矩形裁剪后的图片(我已经成功做到了),我需要的是一个由坐标定义的任意形状的裁剪图片。我正在按照此线程中的答案操作:Cutting a multipoint ploygon out of Bitmap and placing it on transparency,并尝试实现它,但不幸的是,它并没有剪切图片。 我按照描述做了,但似乎出现了某些问题。 图像以矩形方式绘制。 我有什么遗漏吗?
Bitmap originalBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.test_image);
// Image cropped
Bitmap croppedBitmap=Bitmap.createBitmap(originalBitmap, 10, 10, 200, 200);
Canvas canvas=new Canvas(croppedBitmap);

// Create a path
Path path=new Path();
path.setFillType(FillType.INVERSE_EVEN_ODD);
path.moveTo(0, 0);
path.moveTo(0, 100);
path.moveTo(100, 0);
path.moveTo(0, 0);

// Paint with Xfermode
Paint paint=new Paint();
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));

// Draw the path
canvas.drawPath(path, paint);

imageView.setImageBitmap(croppedBitmap);

1
请记住,图像始终是矩形的。图像不能是其他形状。因此,您最好的选择是剪切多边形并将其放置在透明背景上。 - Aleks G
我明白了。您能否给我一些指导,我该如何切割多边形?实际上,这就是我在上面的代码中试图做的事情。 - Andy Res
1个回答

3
我离解决方案非常近了。这就是它:
compositeImageView = (ImageView) findViewById(R.id.imageView);

Bitmap bitmap1=BitmapFactory.decodeResource(getResources(), R.drawable.batman_ad);
Bitmap bitmap2=BitmapFactory.decodeResource(getResources(), R.drawable.logo);

Bitmap resultingImage=Bitmap.createBitmap(320, 480, bitmap1.getConfig());

Canvas canvas = new Canvas(resultingImage);

Paint paint = new Paint();
paint.setAntiAlias(true);
Path path=new Path();
path.lineTo(150, 0);
path.lineTo(230, 120);
path.lineTo(70, 120);
path.lineTo(150, 0);

canvas.drawPath(path, paint);

paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap2, 0, 0, paint);

compositeImageView.setImageBitmap(resultingImage);

1
嘿!@Andy,你能发布一下你的裁剪图像代码和屏幕截图吗?因为我也在寻找多边形裁剪视图。 - Vijju

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接