Objective C to C#(图像裁剪码)

时间:2014-10-29 11:44:48

标签: c# ios xamarin.ios xamarin

我有一个要求裁剪照片的要求。为了所有时态和目的,它进行一些图像处理,结果就像照片被扫描一样。

照片将是文件,并将是大图像(iPad,iPad Mini)

我已经构建了代码来在CoreImage lib的帮助下进行处理,但我仍然坚持裁剪照片。

浏览后我发现了一些我用C#部分实现的代码(monotouch) 内容大小与照片大小相匹配的Scrollview,滚动视图侧面的UIimageView(天体延伸超出屏幕范围),滚动视图顶部的固定黑色半透明视图。

我的滚动,缩放都很有效,但是......

我如何"切出"我的黑色透明视图(cropGuideView)中的裁剪指南我正在尝试剪切缩小的A4指南。

下面的代码似乎是我需要的,但我正在努力将其转换为monotouch。

谢谢

CGRect cropGuide = self.cropGuideView.visibleRect;
UIEdgeInsets edges = self.cropGuideView.edgeWidths;
CGPoint cropGuideOffset = self.cropScrollView.contentOffset;

CGPoint origin = CGPointMake( cropGuideOffset.x + edges.left, cropGuideOffset.y + edges.top );
CGSize size = cropGuide.size;
CGRect crop = { origin, size };

crop.origin.x = crop.origin.x / self.cropScrollView.zoomScale;
crop.origin.y = crop.origin.y / self.cropScrollView.zoomScale;
crop.size.width = crop.size.width / self.cropScrollView.zoomScale;
crop.size.height = crop.size.height / self.cropScrollView.zoomScale;

photo = [photo croppedImage:crop];

2 个答案:

答案 0 :(得分:1)

试试这个(来自Xamarin forums

UIImage cropImage(UIImage srcImage, RectangleF rect) { 
    using (CGImage cr = srcImage.CGImage.WithImageInRect (rect)) {
        UIImage cropped = UIImage.FromImage (cr);
        return cropped;
    }
}

答案 1 :(得分:0)

我已经使用Scrollview的边界使用BeginImageContext解决了这个问题, 然后在上下文中渲染。