核心图像过滤器应用于
我如何申请CIToneCurve过滤我申请核心图像过滤器应用于
filter= [CIFilter filterWithName:@"CIScreenBlendMode"];
[filter setValue:beginImage1 forKey:kCIInputImageKey];
[filter setValue:beginImage forKey:@"inputBackgroundImage"];
不同的过滤器以现在这种方式我想申请CIToneCurve我应该如何应用此与这些参数
inputImage
一个CIImage显示名称为Image的类。
inputPoint0
甲CIVector类,其属性类型是CIAttributeTypeOffset和显示名称是点1默认值:[0,0]身份:[0,0]
inputPoint1
甲CIVector类,其属性类型是CIAttributeTypeOffset和其显示名称是Point 2l。默认值:[0.25,0.25]身份:[0.25,0.25]
inputPoint2
CIVector类的属性类型为CIAttributeTypeOffset,其显示名称为Point 3l。默认值:[0.5,0.5]身份:[0.5,0.5]
inputPoint3
甲CIVector类,其属性类型是CIAttributeTypeOffset和显示名称是点4.默认值:[0.75,0.75]身份:[0.75, 0.75]
inputPoint4
甲CIVector类,其属性类型是CIAttributeTypeOffset和显示名称是点5.默认值:[1,1]身份:[1,1]
我写这些但我应用程序崩溃,出现任何错误
每个过滤器都接受不同类型的参数,但一旦使用它们就很容易。 你没有张贴你做了什么错误,但这个工作对我来说:
- (void)doCIToneCurveFilter
{
// Set an appropriate image. A bit dark so we see the results clearer
// This image is being taken from http://photo.tutsplus.com/tutorials/post-processing/adobe-camera-raw-for-beginners-tone-curve/
imageView.image = [UIImage imageNamed:@"turtles"];
imageView.frame = CGRectMake(0, 0, imageView.image.size.width*0.7, imageView.image.size.height*0.7); // shrank this a bit 2 images fit on screen
// Make the input image recipe
CIImage *inputImage = [CIImage imageWithCGImage:imageView.image.CGImage];
// Make tone filter filter
// See mentioned link for visual reference
CIFilter *toneCurveFilter = [CIFilter filterWithName:@"CIToneCurve"];
[toneCurveFilter setDefaults];
[toneCurveFilter setValue:inputImage forKey:kCIInputImageKey];
[toneCurveFilter setValue:[CIVector vectorWithX:0.0 Y:0.0] forKey:@"inputPoint0"]; // default
[toneCurveFilter setValue:[CIVector vectorWithX:0.27 Y:0.26] forKey:@"inputPoint1"];
[toneCurveFilter setValue:[CIVector vectorWithX:0.5 Y:0.80] forKey:@"inputPoint2"];
[toneCurveFilter setValue:[CIVector vectorWithX:0.7 Y:1.0] forKey:@"inputPoint3"];
[toneCurveFilter setValue:[CIVector vectorWithX:1.0 Y:1.0] forKey:@"inputPoint4"]; // default
// Get the output image recipe
CIImage *outputImage = [toneCurveFilter outputImage];
// Create the context and instruct CoreImage to draw the output image recipe into a CGImage
CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];
// Draw the image in screen
UIImageView *imageView2 = [[UIImageView alloc] initWithImage:[UIImage imageWithCGImage:cgimg]];
CGRect f = imageView2.frame;
f.origin.y = CGRectGetMaxY(imageView.frame);
f.size.width = imageView.frame.size.width;
f.size.height = imageView.frame.size.height;
imageView2.frame = f;
[self.view addSubview:imageView2];
}
这是结果:
我使用的图像是从here有你拍摄可以找到我在这个例子中近似曲线:
PS:如果你想知道为什么我的结果图像与the link的结果看起来不完全一样,那是因为我的图像是局部图像,颜色分布不同。一样但不完全一样。因此,应用完全相同的曲线不会给出完全相同的结果。我希望它有帮助