ios - 无法使用 CIFilter 从 CIImage 中提取 UIImage

标签 ios swift uiimage cifilter ciimage

我有这个新的 iOS 8 Swift 项目,我必须在其中一个 View Controller 中设置图像。但是,我想在将图像发送到 View 之前使用 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 并将其设置回我的 View 。

但我只得到一个错误:

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

swift 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

关于ios - 无法使用 CIFilter 从 CIImage 中提取 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28686972/

相关文章:

ios - 如何使从横向到纵向的模糊图像适合纵横比?

ios - UICollectionView 的反向对齐

android - iOS/Android ARM 设备最快的 FFT 库是什么?

ios - 使用 CloudKit 和 Swift 一次保存多个 CKRecords

ios - 在 Swift 中为 UISearchController 链接数组

objective-c - 测试: Objective-C + Swift

core-data - 核心数据: New added objects are not being added to the end of the array when getting the NSFetchRequest

ios - iPad 仅在设备上扭曲 UIImageView

ios - Swift 2 中的 UIImageView 饼图蒙版

ios - 滚动时 TableView 行会变得困惑