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)
现在我想应用这些过滤器.我应该使用哪种方法?
记录下来:
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)