2012-06-30 1 views
1

нашел этот маленький фрагмент кода, который, кажется, делает то, что я хочу, но я получаю крик от xcode, говорящий self.CGimage не является свойством моего контроллера представления. (что имеет смысл, поскольку это свойство UIimage). Какие изменения мне нужно сделать для этого кода, чтобы он был функциональным? Благодаря!quartz 2D-изображение альфа-маскирование

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

Попробуйте заменить self.CGImage с image.CGImage.

0

Поместите этот метод в категорию UIImage (или подкласс).

 Смежные вопросы

  • Нет связанных вопросов^_^