我在我的应用程序中使用了一堆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参数之一:inputSharpnessCISharpenLuminance过滤器。

回到您的问题:从您的评论看来,您对如何初始化过滤器存在一些问题。我看一下official documentation,在初始化阶段我会改用CISharpenLuminance。但是,仅在ios 6中可用。

编辑
就像我说的那样,如果您要坚持使用核心映像,则所需的功能仅在iOS 6上可用。如果您想与ios 5兼容,我建议您使用来自bradlarson的第三方库:GPU library

关于objective-c - 无法在UIImage上应用inputSharpness,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14070181/

10-10 13:59