CIFilter无法正常工作,返回null图像

Ben*_*ong 3 iphone core-graphics ios ios5

嘿所有我一直在使用一些过滤器.并非所有这些似乎都能正常工作,例如CISepiaTone和CIHueAdjust.最近我尝试了CIGLoom过滤器,它返回一个空图像.

-(UIImage*)getGloom:(UIImage*)anImage{
    CGImageRef cgimage = anImage.CGImage;
    CIImage *cimage = [CIImage imageWithCGImage:cgimage];
    CIFilter *filter = [CIFilter filterWithName:@"CIGloom"];
    [filter setDefaults];
    [filter setValue: cimage forKey: @"inputImage"];
    [filter setValue: [NSNumber numberWithFloat: 25]
             forKey: @"inputRadius"];
    [filter setValue: [NSNumber numberWithFloat: 0.75]
             forKey: @"inputIntensity"];

    CIContext *context = [CIContext contextWithOptions:nil];
    CIImage *ciimage = [filter outputImage];
    CGImageRef cgimg = [context createCGImage:ciimage fromRect:[ciimage extent]];
    UIImage *uimage = [UIImage imageWithCGImage:cgimg scale:1.0f orientation:UIImageOrientationUp];

    CGImageRelease(cgimg);

    return uimage; }
Run Code Online (Sandbox Code Playgroud)

我实际上从今年的techtalk世界巡演中得到了这个代码,它适用于CISepiaTone,但它只是没有用于cigloom.cicolorposterize,ciedges和其他一些.任何人都知道为什么?或者如何绕过这个NUll IMAGE?

小智 5

在iOS上,目前还不支持CIGloom以及其他您遇到过问题的人.您可以使用此数组结果检查可用的过滤器:

NSArray *supportedFilters = [CIFilter filterNamesInCategory:kCICategoryBuiltIn];
Run Code Online (Sandbox Code Playgroud)