在 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)
我想做的是截取屏幕截图,裁剪该屏幕截图,然后通过应用 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)