Skip to content

Instantly share code, notes, and snippets.

@jyliang
Created March 4, 2014 20:23
Show Gist options
  • Save jyliang/9354836 to your computer and use it in GitHub Desktop.
Save jyliang/9354836 to your computer and use it in GitHub Desktop.
UIImageCrop Utility
#define DEGREES_RADIANS(angle) ((angle) / 180.0 * M_PI)
- (UIImage*) UIImageCrop:(UIImage *)img withRect:(CGRect)rect {
CGAffineTransform rectTransform;
switch (img.imageOrientation)
{
case UIImageOrientationLeft:
rectTransform = CGAffineTransformTranslate(CGAffineTransformMakeRotation(DEGREES_RADIANS(90)), 0, -img.size.height);
break;
case UIImageOrientationRight:
rectTransform = CGAffineTransformTranslate(CGAffineTransformMakeRotation(DEGREES_RADIANS(-90)), -img.size.width, 0);
break;
case UIImageOrientationDown:
rectTransform = CGAffineTransformTranslate(CGAffineTransformMakeRotation(DEGREES_RADIANS(-180)), -img.size.width, -img.size.height);
break;
default:
rectTransform = CGAffineTransformIdentity;
};
rectTransform = CGAffineTransformScale(rectTransform, img.scale, img.scale);
CGImageRef imageRef = CGImageCreateWithImageInRect([img CGImage], CGRectApplyAffineTransform(rect, rectTransform));
UIImage *result = [UIImage imageWithCGImage:imageRef scale:img.scale orientation:img.imageOrientation];
CGImageRelease(imageRef);
return result;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment