我要做的是截取屏幕截图,裁剪屏幕截图,然后通过应用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,所以我不知道自己在做什么,所以很可能这是一个简单的错误。提前谢谢!
答案 0 :(得分:1)
你应该使用kCIInputIntensityKey param而不是@"inputSharpness" or kCIInputSharpnessKey
所以你的代码应该是
filter.setValue(0.8, forKey: @"inputSharpness")
或
filter.setValue(0.8, forKey:kCIInputSharpnessKey)