< Zurück

02.12.2012 23:05:00 • Categories: Objective-C • Tags: UIImage, Objective-C

Objective-C: resize and mask an image

- (UIImage*) maskImage:(UIImage *)image {

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

UIImage *maskImage = [UIImage imageNamed:@"mask.png"]; CGImageRef maskImageRef = [maskImage CGImage];

// create a bitmap graphics context the size of the image CGContextRef mainViewContentContext = CGBitmapContextCreate (NULL, maskImage.size.width, maskImage.size.height, 8, 0, colorSpace, kCGImageAlphaPremultipliedLast);

if (mainViewContentContext==NULL) return NULL;

CGFloat ratio = 0;

ratio = maskImage.size.width/ image.size.width;

if(ratio * image.size.height < maskImage.size.height) { ratio = maskImage.size.height/ image.size.height; }

CGRect rect1  = {{0, 0}, {maskImage.size.width, maskImage.size.height}}; CGRect rect2  = {{-((image.size.widthratio)-maskImage.size.width)/2 , -((image.size.heightratio)-maskImage.size.height)/2}, {image.size.widthratio, image.size.heightratio}};

CGContextClipToMask(mainViewContentContext, rect1, maskImageRef); CGContextDrawImage(mainViewContentContext, rect2, image.CGImage);

// Create CGImageRef of the main view bitmap content, and then // release that bitmap context CGImageRef newImage = CGBitmapContextCreateImage(mainViewContentContext); CGContextRelease(mainViewContentContext);

UIImage *theImage = [UIImage imageWithCGImage:newImage];

CGImageRelease(newImage);

// return the image return theImage; }

 


< Zurück | ^ nach oben