Friday, October 3, 2014

Image Processing in ObjC



Combine two UIImages
-----------------------------
- (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:
------------------------------------------------------------
- (UIImage *)imageFromImage:(UIImage *)image inRect:(CGRect)rect { 
    CGImageRef sourceImageRef = [image CGImage]; 
    CGImageRef newImageRef = CGImageCreateWithImageInRect(sourceImageRef, rect); 
    UIImage *newImage = [UIImage imageWithCGImage:newImageRef]; 
    CGImageRelease(newImageRef); 
    return newImage; 
}



Save UIImage to Photo Album:
--------------------------------------
UIImageWriteToSavedPhotosAlbum(image, self, @selector(imageSavedToPhotosAlbum: didFinishSavingWithError: contextInfo:), context); 
   
   
- (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]; 
}



No comments: