1

我正在使用以下代码裁剪 UIImage:

UIImage *image=[info objectForKey:UIImagePickerControllerOriginalImage];

CGRect rect = CGRectMake(10,10,700, 700);

CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], rect);
UIImage *img = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);

我可以裁剪一个高度,但是如果我增加了 Y 轴,它就不会被裁剪。

CGRect rect = CGRectMake(10,50,700, 700);

有什么解决办法吗?

4

2 回答 2

0

从逻辑上讲,对于图像的裁剪,只有大小是相关的。所以你必须相应地调整你的widthheight。框架的xy坐标只会改变位置,而不是大小。

于 2013-03-01T08:53:05.270 回答
0

查看这个 github 库,它可以执行您想要的操作 imageCroppedToRect

- (UIImage *)imageCroppedToRect:(CGRect)rect {
    // CGImageCreateWithImageInRect's `rect` parameter is in pixels of the image's coordinates system. Convert from points.
    CGFloat scale = self.scale;
    rect = CGRectMake(rect.origin.x * scale, rect.origin.y * scale, rect.size.width * scale, rect.size.height * scale);

    CGImageRef imageRef = CGImageCreateWithImageInRect(self.CGImage, rect);
    UIImage *cropped = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);
    return cropped;
}
于 2013-03-01T08:58:25.933 回答