Skip to content

Instantly share code, notes, and snippets.

@djbriane
Created August 3, 2009 19:43
Show Gist options
  • Star 9 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save djbriane/160791 to your computer and use it in GitHub Desktop.
Save djbriane/160791 to your computer and use it in GitHub Desktop.
Method that Creates a Thumbnail from a UIImage
+ (UIImage *)generatePhotoThumbnail:(UIImage *)image {
// Create a thumbnail version of the image for the event object.
CGSize size = image.size;
CGSize croppedSize;
CGFloat ratio = 64.0;
CGFloat offsetX = 0.0;
CGFloat offsetY = 0.0;
// check the size of the image, we want to make it
// a square with sides the size of the smallest dimension
if (size.width > size.height) {
offsetX = (size.height - size.width) / 2;
croppedSize = CGSizeMake(size.height, size.height);
} else {
offsetY = (size.width - size.height) / 2;
croppedSize = CGSizeMake(size.width, size.width);
}
// Crop the image before resize
CGRect clippedRect = CGRectMake(offsetX * -1, offsetY * -1, croppedSize.width, croppedSize.height);
CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], clippedRect);
// Done cropping
// Resize the image
CGRect rect = CGRectMake(0.0, 0.0, ratio, ratio);
UIGraphicsBeginImageContext(rect.size);
[[UIImage imageWithCGImage:imageRef] drawInRect:rect];
UIImage *thumbnail = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// Done Resizing
return thumbnail;
}
@dblock
Copy link

dblock commented Mar 21, 2014

This is great, but you also need to release imageRef, or you have a memory leak:

    CGImageRelease(imageRef);

@kddior
Copy link

kddior commented Oct 9, 2016

great really Helpful . !!! But it seems you are not takin in account the orientation of the image .I know in swift you get the right orientation by passing the original image orientation when initializing the UIImage "imageWithCGImage" line 8 .
thanks a Lot !!!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment