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;

}
4

2 に答える 2

0

このメソッドをUIImageカテゴリ(またはサブクラス)に配置します。

于 2012-06-30T21:43:56.990 に答える
0

に置き換えself.CGImageてみてくださいimage.CGImage

于 2012-06-30T21:39:27.160 に答える