2014-01-31 2 views
2

이미지를 자르는 기능을 만들려면 4 점이 필요합니다.네 모서리 점 (비 직사각형)을 지정하여 이미지 자르기

입력 : ----------> 이미지, 네 모서리 점

출력 : -------> 자른 이미지

나는 두 가지 자르기의 건너왔다 기능은 지금까지 포인트를 사용

1), 점, 높이를 사용

2

폭 높이 &)는, 폭 &는 각 그러나 이러한 기능은 완전히 내 문제를 해결하지 못하는 것 같습니다.

더 명확히하기 위해 아래의 이미지에서 내 의도를 묘사하려고 노력했습니다. Cropping an image, by specifying corner points

+0

는 = 새로운 비트 맵 (rect.Width, RECT { 비트 맵 결과 (각도, 부울 HighQuality을 떠, 비트 맵 소스, 사각형 RECT) 당신이 시도한 코드를 보여 –

+0

공공 정적 비트 맵 CropRotatedRect ...에 문제가하십시오. 신장); using (Graphics g = Graphics.FromImage (result)) { g.InterpolationMode = HighQuality? InterpolationMode.HighQualityBicubic : InterpolationMode.Default; (매트릭스 매트 = new 매트릭스()) { 매트. mat.RotateAt (angle, rect.Location); g.Transform = mat; g.DrawImage (source, new Point (0, 0)); } } 반환 결과; } – VAR

+0

위의 코드를 사용했지만 입력 영역이 사다리꼴 인 경우 함수가 작동하지 않는 것 같습니다. 4 포인트를 입력으로 처리 한 다음 처리하면 모든 입력 영역 유형에 대한 해결책이됩니다. 적어도 그게 내 기분이야. – VAR

답변

2

마지막으로 직사각형 하나에 모든 사각형을 변환 할 내 문제 :

// define quadrilateral's corners 
List<IntPoint> corners = new List<IntPoint>(); 
corners.Add(new IntPoint( x1, y1)); 
corners.Add(new IntPoint(x2, y2)); 
corners.Add(new IntPoint(x3, y3)); 
corners.Add(new IntPoint(x4, y4)); 
// create filter 
QuadrilateralTransformation filter=new QuadrilateralTransformationBilinear(corners, NewWidth, NewHeight); 
// apply the filter 
Bitmap newImage = filter.Apply(image); 

이에 대한 해결책을 발견했다. 도움이 되었기 때문에 다른 사람들에게도 도움이 되었기를 바랍니다.