我在我的应用中使用了一堆CIFilter
过滤器来调整亮度,饱和度等,并且它们工作正常。我在inputSharpness
遇到了一些问题。如果我触摸锐度滑块,图片就会消失。相关代码:
UIImage *aUIImage = [imageView image];
CGImageRef aCGImage = aUIImage.CGImage;
aCIImage = [CIImage imageWithCGImage:aCGImage];
//Create context
context = [CIContext contextWithOptions:nil];
sharpFilter = [CIFilter filterWithName:@"CIAttributeTypeScalar" keysAndValues: @"inputImage", aCIImage, nil];
...
- (IBAction)sharpSliderChanged:(id)sender
{
//Set filter value
[sharpFilter setValue:[NSNumber numberWithFloat:sharpSlider.value] forKey:@"inputSharpness"];
//Convert CIImage to UIImage
outputImage = [sharpFilter outputImage];
CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];
newUIImage = [UIImage imageWithCGImage:cgimg];
CGImageRelease(cgimg);
//add image to imageView
[imageView setImage:newUIImage];
}
答案 0 :(得分:1)
我已经阅读了一个类似问题的帖子,可能的解决方案是为你想要提供的UIImage效果添加一个类别。这里唯一的区别是您应该使用其中一个CIColorControls
参数:inputSharpness
和CISharpenLuminance
过滤器。
回到你的问题:从您的评论中可以看出,您对如何初始化过滤器存在一些问题。我看一下official documentation,我会在初始化阶段使用CISharpenLuminance
。它仅适用于ios 6。
修改强> 就像我说的,如果你想坚持使用核心图像,你想要的功能只能在iOS 6上使用。如果你想与ios 5兼容,我建议你使用bradlarson的第三方lib:GPU library。