1

この新しい iOS 8 Swift プロジェクトがあり、そのビュー コントローラーの 1 つでイメージを設定する必要があります。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

誰かが私がここで間違っていることを教えてもらえますか?

4

1 に答える 1

5

あなたはほとんどそれを手に入れました。

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

Swift3以降

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
于 2015-02-24T02:34:16.320 に答える