在Core Image中设置过滤器值会导致崩溃。 - 斯威夫特

时间:2015-07-01 18:45:25

标签: ios swift filter core-image setvalue

我要做的是截取屏幕截图,裁剪屏幕截图,然后通过应用CISharpenLuminance过滤器使其看起来更好看。在添加过滤器之前,代码一直正常工作。当我按下完成所有这一切的按钮时,我收到此错误:“以NSException类型的未捕获异常终止”和AppDelegate第一行中的崩溃错误消息:“Thread 1:signal SIGABRT”

这是我的代码:

        //Getting the Image
        UIGraphicsBeginImageContext(view.frame.size)
        view.layer.renderInContext(UIGraphicsGetCurrentContext())
        image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        //Cropping the Image
        let rect = CGRectMake(0, 97, 320, 213)
        let cgiImage = image?.CGImage
        let imageBitMap: CGImageRef = CGImageCreateWithImageInRect(cgiImage, rect)



        //Sharpening the Image
        let ciiCroppedImage = CIImage(CGImage: imageBitMap)

        let filter = CIFilter(name: "CISharpenLuminance")
        filter.setValue(ciiCroppedImage, forKey: kCIInputImageKey)
        filter.setValue(0.8, forKey: kCIInputIntensityKey)

        let context = CIContext(options: nil)
        let cgimg = context.createCGImage(filter.outputImage, fromRect: filter.outputImage.extent())

        finalImage = UIImage(CIImage: filter.outputImage)

如果我评论这一行:     filter.setValue(0.8,forKey:kCIInputIntensityKey) 该应用程序不会崩溃,但当然这样的废墟点。我很确定这条线是问题所在,但我可能错了。 image和finalImage在按钮外声明为空变量。这是我第一次使用Core Image,所以我不知道自己在做什么,所以很可能这是一个简单的错误。提前谢谢!

1 个答案:

答案 0 :(得分:1)

你应该使用kCIInputIntensityKey param而不是@"inputSharpness" or kCIInputSharpnessKey

enter image description here

所以你的代码应该是

filter.setValue(0.8, forKey: @"inputSharpness")

filter.setValue(0.8, forKey:kCIInputSharpnessKey)