无法在UIImage上应用inputSharpness

时间:2012-12-28 13:20:18

标签: objective-c ios filter uiimage ios5.1

我在我的应用中使用了一堆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];

}

1 个答案:

答案 0 :(得分:1)

我已经阅读了一个类似问题的帖子,可能的解决方案是为你想要提供的UIImage效果添加一个类别。这里唯一的区别是您应该使用其中一个CIColorControls参数:inputSharpnessCISharpenLuminance过滤器。

回到你的问题:从您的评论中可以看出,您对如何初始化过滤器存在一些问题。我看一下official documentation,我会在初始化阶段使用CISharpenLuminance。它仅适用于ios 6。

修改 就像我说的,如果你想坚持使用核心图像,你想要的功能只能在iOS 6上使用。如果你想与ios 5兼容,我建议你使用bradlarson的第三方lib:GPU library