2013-04-12 226 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