应用不同的过滤器

Muz*_*san 1 iphone core-image ios ios5

我想问我正在使用核心图像并应用一些过滤器使用此过滤器

filter = [CIFilter filterWithName:@"CIVignette" 
                                  keysAndValues: kCIInputImageKey, beginImage, 
                        @"inputIntensity", [NSNumber numberWithFloat:0.8], nil];
    CIImage *outputImage = [filter outputImage];
Run Code Online (Sandbox Code Playgroud)

但我想知道我如何实现我试过的其他过滤器,但应用程序崩溃,所以我想应用像我使用日志内置的这些过滤器

    CISourceOutCompositing,
    CISourceOverCompositing,
    CIStraightenFilter,
    CIStripesGenerator,
    CITemperatureAndTint,
    CIToneCurve,
    CIVibrance,
    CIVignette,
    CIWhitePointAdjust
Run Code Online (Sandbox Code Playgroud)

现在我想应用这些过滤器.我应该使用哪种方法?

aks*_*188 7

记录下来:

NSArray *properties = [CIFilter filterNamesInCategory:
                           kCICategoryBuiltIn];
    NSLog(@"%@", properties);
    for (NSString *filterName in properties) {
        CIFilter *fltr = [CIFilter filterWithName:filterName];
        NSLog(@"%@", [fltr attributes]);
    }
Run Code Online (Sandbox Code Playgroud)

您将获得所有过滤器名称和分配给它们所需的属性.一旦掌握了所有钥匙,就很容易了.

eglog o/p -

 CIAttributeFilterDisplayName = Vibrance;
    CIAttributeFilterName = CIVibrance;
    inputAmount =     {
        CIAttributeClass = NSNumber;
        CIAttributeDefault = 0;
        CIAttributeIdentity = 0;
        CIAttributeMax = 1;
        CIAttributeMin = "-1";
        CIAttributeSliderMax = 1;
        CIAttributeSliderMin = "-1";
        CIAttributeType = CIAttributeTypeScalar;
    };
    inputImage =     {
        CIAttributeClass = CIImage;
        CIAttributeType = CIAttributeTypeImage;
    };
Run Code Online (Sandbox Code Playgroud)

从中您可以看出,对于过滤器CIVibrance,您具有键inputAmount.你可以把它写成:

CIFilter* filter = [CIFilter filterWithName:@"CIVibrance"
                                  keysAndValues:kCIInputImageKey,beginImage,@"inputAmount",[NSNumber numberWithFloat:0.8], nil];
Run Code Online (Sandbox Code Playgroud)