1

found this little code snippet that seems to do what i want, but im getting yelled at by xcode saying self.CGimage isnt a property of my view controller. (which makes sense since thats a UIimage property). What changes would i need to make to this code for it to be functional? Thanks!

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

    CGContextRef mainViewContentContext;
    CGColorSpaceRef colorSpace;
    UIImage* tempImage;

    colorSpace = CGColorSpaceCreateDeviceRGB();

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

    // free the rgb colorspace
    CGColorSpaceRelease(colorSpace);

    CGImageRef maskingImage = [maskImage CGImage];
    CGContextClipToMask(mainViewContentContext, CGRectMake(0, 0, maskImage.size.width, maskImage.size.height), maskingImage);
    CGContextDrawImage(mainViewContentContext, CGRectMake(0, 0, image.size.width, image.size.height), self.CGImage);

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

    // convert the finished resized image to a UIImage
    UIImage *theImage = [UIImage imageWithCGImage:mainViewContentBitmapContext];
    // image is retained by the property setting above, so we can
    // release the original

    CGContextRelease(mainViewContentContext);
    CGImageRelease(mainViewContentBitmapContext);
    maskingImage = nil;
    CGImageRelease(maskingImage);
    // return the image
    return theImage;

}
4

2 回答 2

0

Try replacing self.CGImage with image.CGImage.

于 2012-06-30T21:39:27.160 回答
0

Place this method in a UIImage category (or subclass).

于 2012-06-30T21:43:56.990 回答