2012-06-30 24 views
1

发现这个小代码片段似乎做我想做的事情,但即时通过xcode说self.CGimage不是我的视图控制器的属性大吼。 (这是有道理的,因为这是一个UIimage属性)。我需要对此代码进行哪些更改才能使其功能化?谢谢!石英二维图像阿尔法掩模

- (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; 

} 

回答

0

尝试用image.CGImage代替self.CGImage

0

将此方法放在UIImage类别(或子类)中。