无法使用CIFilter从CIImage中提取UIImage
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法使用CIFilter从CIImage中提取UIImage相关的知识,希望对你有一定的参考价值。
我有这个新的ios 8 Swift项目,在其中一个视图控制器中我必须设置图像。但是,我想在将图像发送到视图之前使用CIFilter
更改图像的对比度:
所以这是我的代码:
view = UIImageView(frame:CGRectMake(0, 0, 200, 200))
var lecturePicture = UIImage(named: "placeholder")
var beginImage = lecturePicture?.CIImage
var controlsFilter = CIFilter(name: "CIColorControls")
controlsFilter.setValue(beginImage, forKey: kCIInputImageKey)
controlsFilter.setValue(1.5, forKey: "inputContrast")
var displayImage = UIImage(CIImage: controlsFilter.outputImage) // breakpoint
(view as UIImageView!).image = displayImage
好吧,我只是得到一个图像,对它应用转换,然后将转换后的版本作为UIImage
并将其设置回我的视图。
但我只得到一个错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
有人可以告诉我这里我做错了什么吗?
答案
你几乎得到了它。
controlsFilter.setValue(beginImage, forKey: kCIInputImageKey) // here you did it the right way
controlsFilter.setValue(1.5, forKey: "inputContrast") // you should keep the same approach here
斯威夫特2
let lecturePicture = UIImage(data: NSData(contentsOfURL: NSURL(string:"http://i.stack.imgur.com/Xs4RX.jpg")!)!)!
let controlsFilter = CIFilter(name: "CIColorControls")
let beginImage = CIImage(image: lecturePicture)
controlsFilter.setValue(beginImage, forKey: kCIInputImageKey)
controlsFilter.setValue(1.5, forKey: kCIInputContrastKey)
let displayImage = UIImage(CGImage: CIContext(options: nil).createCGImage(controlsFilter.outputImage, fromRect:controlsFilter.outputImage.extent()))!
displayImage
Swift 3或更高版本
let lecturePicture = UIImage(data: try! Data(contentsOf: URL(string: "http://i.stack.imgur.com/Xs4RX.jpg")!))!
let controlsFilter = CIFilter(name: "CIColorControls")!
let beginImage = CIImage(image: lecturePicture)
controlsFilter.setValue(beginImage, forKey: kCIInputImageKey)
controlsFilter.setValue(1.5, forKey: kCIInputContrastKey)
let displayImage = UIImage(cgImage: CIContext(options: nil).createCGImage(controlsFilter.outputImage!, from: controlsFilter.outputImage!.extent)!)
displayImage
以上是关于无法使用CIFilter从CIImage中提取UIImage的主要内容,如果未能解决你的问题,请参考以下文章