This post shows an example of one way to crop an image. Let’s begin by looking at a screenshot of the original and cropped image on the iPhone simulator:

As you can see, I am cropping a rectangle from the middle of the image on the top left. The code below shows how to accomplished this:
// Create the image from a png file
UIImage *image = [UIImage imageNamed:@"prgBinary.jpg"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
// Get size of current image
CGSize size = [image size];
// Frame location in view to show original image
[imageView setFrame:CGRectMake(0, 0, size.width, size.height)];
[[self view] addSubview:imageView];
[imageView release];
// Create rectangle that represents a cropped image
// from the middle of the existing image
CGRect rect = CGRectMake(size.width / 4, size.height / 4 ,
(size.width / 2), (size.height / 2));
// Create bitmap image from original image data,
// using rectangle to specify desired crop area
CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], rect);
UIImage *img = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
// Create and show the new image from bitmap data
imageView = [[UIImageView alloc] initWithImage:img];
[imageView setFrame:CGRectMake(0, 200, (size.width / 2), (size.height / 2))];
[[self view] addSubview:imageView];
[imageView release];
All the heavy lifting is done by the method CGImageCreateWithImageInRect, which creates a new bitmap image using existing image data and a rectangle that is a subregion of that same image. Once cropped, I create a new UIImageView and add it as a subview of the current view.
Comments
14 Responses to “How to Crop an Image”
Leave Comment
All Content Copyright © 2008-2012 • iOS Developer Tips, All Rights Reserved.
Awesome, this totally rocks! Thanks
[Reply]
Nice job.
I used the “CGImageCreateWithImageInRect” to implement a Util to crop image.
[Reply]
Thank you, it helps a lot.
[Reply]
Great job. I was searching correct way of crop image. No memory leak.
Cheers
[Reply]
Thanks, this saved me time rummaging through all the CG library options!
[Reply]
Thanks
[Reply]
Great work dude em loving it :)
[Reply]
Thank you. It’s very usefull.
[Reply]
Thanks Really… Its a very useful link
[Reply]
Thanks, works, well!
[Reply]
Thanks! That’s a great solution, provided you aren’t using display specific images (normal vs. retina). In that case, I would add something like CGFloat scale = ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2.0) ? 2.0 : 1.0; and change the assignment of img to UIImage *img = [UIImage imageWithCGImage:imageRef scale:scale orientation:]; You will also need to multiply your size dimensions by scale as well.
[Reply]
Thanks,…….. it’s really good job.
[Reply]
Very Helpful for new user …………
[Reply]
incredeble app.. we need more options while cropping the pic..!!!
[Reply]