使用ios中的核心图像裁剪椭圆

时间:2012-08-27 08:04:35

标签: ios core-graphics core-image

我想从ios中的图像裁剪椭圆。使用核心图像框架,我知道可以裁剪一个反角区域。

使用核心图形,我能够剪切椭圆区域。但是,裁剪图像的大小与原始图像的大小相同,因为我将蒙版应用于椭圆外的区域。

因此,目标是从图像裁剪椭圆区域,裁剪图像的大小不会超过该图像的矩形边界。

非常感谢任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:2)

您必须以正确的大小创建上下文,请尝试以下代码:

- (UIImage *)cropImage:(UIImage *)input inElipse:(CGRect)rect {
    CGRect drawArea = CGRectMake(-rect.origin.x, -rect.origin.y, input.size.width, input.size.height);

    UIGraphicsBeginImageContext(rect.size);
    CGContextRef ctx = UIGraphicsGetCurrentContext();

    CGContextAddEllipseInRect(ctx, CGRectMake(0, 0, rect.size.width, rect.size.height));
    CGContextClip(ctx);

    [input drawInRect:drawArea];

    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img;
}

也许你必须根据自己的需要调整drawArea,因为我没有测试它。