如何裁剪图像并从原始图像设置其裁剪边界

时间:2013-09-13 08:42:41

标签: ios objective-c cocoa-touch uiimageview uiimage

我的UIImageView *userImage尺寸为全屏,UIImageView *imageSquare尺寸为320x320。用户可以使用userImage来更大,更改位置等。imageSquare是静态的,应该被视为裁剪视图

以下代码可以将userImage裁剪为imageSquare.frame.size。我的问题是,它从userImage的顶部而不是imageSquare.frame.origin进行裁剪,这意味着我需要从X坐标和Y坐标裁剪它。这是我第一次尝试这样做,到目前为止我尝试的每件事都无法从imageSquare.frame.origin中裁剪出来。

如何从userImage裁剪imageSquare.frame.origin的当前视图(用户操作的)?

CGSize pageSize = imageSquare.frame.size;

    UIGraphicsBeginImageContext(pageSize);

    CGContextRef resizedContext = UIGraphicsGetCurrentContext();
    CGContextTranslateCTM(resizedContext, userImage.frame.origin.x, userImage.frame.origin.y);

    [userImage.layer renderInContext:resizedContext];
    image = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    if (image != nil) {
        NSLog(@"is not nil");
        NSData *imgData = UIImagePNGRepresentation(image);
        imageSquare.image = [[UIImage alloc]initWithData:imgData];

    }

1 个答案:

答案 0 :(得分:0)

您需要翻译否定 xy

CGContextTranslateCTM(resizedContext,
                      -userImage.frame.origin.x,
                      -userImage.frame.origin.y);
[userImage.layer renderInContext:resizedContext];