iphone UIImage常用方法

长平狐 发布于 2012/08/13 15:44
阅读 120
收藏 0


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 {   
    // 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();   
    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;   


Save UIImage to Photo Album

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   
                                          cancelButtonTitle:NSLocalizedString(@"ButtonOK" , @ "" )   
    [alert show];   
    [alert release];