如何获得正确的区域来裁剪 UIImage?

Posted

技术标签:

【中文标题】如何获得正确的区域来裁剪 UIImage?【英文标题】:How to get the correctly region to crop an UIImage? 【发布时间】:2017-01-04 01:52:08 【问题描述】:

我的目标 c 应用程序中有一个 UIImageView。在这个UIImageView 上,我加载了一张照片,然后从相机中拍摄。我应用一个区域来裁剪UIImage。该区域是CAShapeLayer 的矩形。但我的问题是,当我将框架包含在矩形中时,这与我的矩形所在的位置不同......我得到一个错误的区域然后裁剪。

我使用这个代码:

 CAShapeLayer *_outline = [CAShapeLayer new];
 UIImageView *vistaImagen;
 ...
UIGraphicsBeginImageContextWithOptions(_vistaImagen.frame.size, NO, 0.0);
CGContextRef context = UIGraphicsGetCurrentContext();

CGContextAddPath(context, _boundingBox.accessibilityPath.CGPath);

CGContextClip(context);
[_vistaImagen.layer renderInContext:context];
UIImage *iii = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

如果我添加了要裁剪的图层框架,可能会出现什么问题:_boundingBox.accessibilityPath.CGPath ??

谢谢!!

【问题讨论】:

【参考方案1】:

好吧,花了几个小时后,我发现了问题。我正在创建规模不佳的 UIGraphicsBeginImageContextWithOptions ... 我需要使用比例为 1,因为我在 UIImage 中以真实比例获取图像,但我将比例初始化为 0。

UIImageView *vistaImagen;
UIGraphicsBeginImageContextWithOptions(_vistaImagen.frame.size, NO, 1.0);

【讨论】:

以上是关于如何获得正确的区域来裁剪 UIImage?的主要内容,如果未能解决你的问题,请参考以下文章

像IOS 5一样裁剪UIImage时如何制作视图效果?

CGImageCreateWithImageInRect 不能正确裁剪

像 camscanner 一样裁剪 UIImage

裁剪 UIImage 的部分以获得新的纵横比并缩小到大小

在 UIScrollView 中获取 UIImage 可见部分的正确坐标

如何使用 CIFilter 在 Swift 中将 UIImage 转换为灰度?