当我们直接使用CGImageCreateWithImageInRect获取图片时,会发现我们实际得到的截取图像,恰好是当rect旋转90°时,应该得到的图像:
- (UIImage *)cropImage:(UIImage*)image toRect:(CGRect)rect {
CGImageRef imageRef = CGImageCreateWithImageInRect(image.CGImage,rect);
UIImage *result = [UIImage imageWithCGImage:imageRef scale:image.scale orientation:image.imageOrientation];
return result;
这是因为CGImageCreateWithImageInRect中得rect是获取自UIImage中得rect,而不是UIImageView的;而在UIImage的坐标系中,(0,0)点位于左下角,因此在裁剪区域确定时,需要转换成对应坐标系中得区域:以下是转换代码: