http://iphoneincubator.com/blog/tag/uiimage
Recently there have been some interesting developer news related to working with images on the iPhone.
- First there is Chris Greening’s open source project simple-iphone-image-processing , that provides a set of common image processing tasks .
- Today I listened to the Mobile Orchard’s podcast Interview with Paul Cantrell , and the discussion was about UIKit, views, layers, etc. This was the most enlightening information I’ve come across on this topic ever. Highly recommended.
So, I thought I’d contribute a few UIImage routines that I’ve found useful.
Combine two UIImages
To add two UIImages together you need to make use of Graphics Context.
- - (UIImage *)addImage:(UIImage *)image1 toImage:(UIImage *)image2 {
- UIGraphicsBeginImageContext(image1.size);
-
-
- [image1 drawInRect:CGRectMake(0, 0, image1.size.width, image1.size.height)];
-
-
- [image2 drawInRect:CGRectMake(0, 0, image2.size.width, image2.size.height)];
-
- UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
-
- UIGraphicsEndImageContext();
-
- return resultingImage;
- }
- (UIImage *)addImage:(UIImage *)image1 toImage:(UIImage *)image2 {
UIGraphicsBeginImageContext(image1.size);
// Draw image1
[image1 drawInRect:CGRectMake(0, 0, image1.size.width, image1.size.height)];
// Draw image2
[image2 drawInRect:CGRectMake(0, 0, image2.size.width, image2.size.height)];
UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resultingImage;
}
Create a UIImage from a part of another UIImage
This requires a round-trip to Core Graphics land:
- - (UIImage *)imageFromImage:(UIImage *)image inRect:(CGRect)rect {
- CGImageRef sourceImageRef = [image CGImage];
- CGImageRef newImageRef = CGImageCreateWithImageInRect(sourceImageRef, rect);
- UIImage *newImage = [UIImage imageWithCGImage:newImageRef];
- return newImage;
- }
- (UIImage *)imageFromImage:(UIImage *)image inRect:(CGRect)rect {
CGImageRef sourceImageRef = [image CGImage];
CGImageRef newImageRef = CGImageCreateWithImageInRect(sourceImageRef, rect);
UIImage *newImage = [UIImage imageWithCGImage:newImageRef];
return newImage;
}
Save UIImage to Photo Album
This is just a one-liner:
- UIImageWriteToSavedPhotosAlbum(image, self, @selector(imageSavedToPhotosAlbum: didFinishSavingWithError: contextInfo:), context);
UIImageWriteToSavedPhotosAlbum(image, self, @selector(imageSavedToPhotosAlbum: didFinishSavingWithError: contextInfo:), context);
And to know if the save was successful:
- - ( void )imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:( void *)contextInfo {
- NSString *message;
- NSString *title;
- if (!error) {
- title = NSLocalizedString(@"SaveSuccessTitle" , @ "" );
- message = NSLocalizedString(@"SaveSuccessMessage" , @ "" );
- } else {
- title = NSLocalizedString(@"SaveFailedTitle" , @ "" );
- message = [error description];
- }
- UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
- message:message
- delegate:nil
- cancelButtonTitle:NSLocalizedString(@"ButtonOK" , @ "" )
- otherButtonTitles:nil];
- [alert show];
- [alert release];
- }