在 Core Image 中设置过滤器值会导致崩溃。 - Swift

Setting filter value in Core Image is causing a crash. - Swift

我想做的是截取屏幕截图,裁剪该屏幕截图,然后通过应用 CISharpenLuminance 滤镜使其看起来更好。在我添加过滤器之前,代码一切正常。当我按下执行所有这些操作的按钮时,我收到此错误:"terminating with uncaught exception of type 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,所以我不知道自己在做什么,所以这很可能是一个简单的错误。提前致谢!

您不应使用 kCIInputIntensityKey 参数,而应使用 @"inputSharpness" or kCIInputSharpnessKey

所以你的代码应该是

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

filter.setValue(0.8, forKey:kCIInputSharpnessKey)