2013-04-12 69 views
4

我想按多边形区域裁剪图像,但无法找到任何可以生成图像的库。 OpenCV对于这个小东西来说太大了。 JJIL [enter link description here]裁剪矩形区域。 也许你有什么想法我可以实现它?感谢帮助!按多边形区域裁剪图像

enter image description here enter image description here

FOR尼迪: 尝试这样的事情,如果不列入工作 - 创建另一个画布路径,不是从它那里得到位图(蒙版),这掩码位应用到您最初的帆布而不是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); 
+1

你有什么问题?它非常简单:首先 - 在感兴趣的区域内进行掩模填充,其次 - 用某个背景值替换掩码== 0的所有图像像素。 –

+0

谢谢你的建议! – ADK

+0

你好ADK,其实我是android.app新手,而且我也找到如何使用多边形裁剪图像的解决方案。你能给我一些关于你是如何实现这一点的暗示。一些提示也会帮助我很多。 – Dory

回答

2

感谢Eddy_Em,我通过使用PorterDuffXfermode实现了这一点。 Good example