我想裁剪图像的多边形面积,但找不到任何库,这可以使它。OpenCV对于这个小东西来说太大了。JJIL [enter link description here]仅裁剪矩形区域。也许你有什么想法,我如何才能实现它?谢谢你的帮助!
对于Nidhi:尝试这样的东西,如果不工作-创建另一个画布的路径,然后从它得到位图(掩码),并应用此掩码位图到您的初始画布,而不是drawPath。
Bitmap obmp = BitmapFactory.decodeResource(getResources(), R.drawable.image1);
Bitmap resultImg = Bitmap.createBitmap(obmp.getWidth(), obmp.getHeight(), Bitmap.Config.ARGB_8888);
Bitmap maskImg = Bitmap.createBitmap(obmp.getWidth(), obmp.getHeight(), Bitmap.Config.ARGB_8888);
Canvas mCanvas = new Canvas(resultImg);
Canvas maskCanvas = new Canvas(maskImg);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL);;
paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
Path path = new Path();
path.moveTo(view.mx,view.my);
path.lineTo(view.x1,view.y1);
path.lineTo(view.x2,view.y2 );
path.lineTo(view.x3,view.y3);
path.lineTo(view.x4,view.y4);
path.close();
maskCanvas.drawPath(path, paint);
mCanvas.drawBitmap(obmp, 0, 0, null);
mCanvas.drawBitmap(maskImg, 0, 0, paint);
3条答案
按热度按时间monwx1rj1#
感谢Eddy_Em,我通过使用PorterDuffXfermode实现了这一点。Good example
gg0vcinb2#
这是一个可以工作的Kotlin示例,它根据路径将图像和片段共享到多边形
c7rzv4ha3#
这是一个很晚的答案,但它将对许多人有帮助。
解决方案在这里:https://github.com/pqpo/SmartCropper/tree/master
你需要的一切都在那里。