我在我的应用程序中使用了一堆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];
}
最佳答案
我读过一篇类似问题的文章,一种可能的解决方案是为您要提供的UIImage效果添加一个类别。唯一的区别是您应该使用CIColorControls
参数之一:inputSharpness
和CISharpenLuminance
过滤器。
回到您的问题:从您的评论看来,您对如何初始化过滤器存在一些问题。我看一下official documentation,在初始化阶段我会改用CISharpenLuminance
。但是,仅在ios 6中可用。
编辑
就像我说的那样,如果您要坚持使用核心映像,则所需的功能仅在iOS 6上可用。如果您想与ios 5兼容,我建议您使用来自bradlarson的第三方库:GPU library。
关于objective-c - 无法在UIImage上应用inputSharpness,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14070181/