Ich verwende Kernbild und ich verwende einen CIFilter Sepiaton zu meinem Bild. Ich führe einmal in viewDidLoad einen Filter aus und dann sofort eine andere Funktion, die den Filter erneut hinzufügt. Wenn ich versuche, auf das Ausgabebild zuzugreifen, stürzt die App aus irgendeinem Grund ab und sagt, dass das Ausgabebild null ist. Wer weiß, warum das passiert?CIFilter Ausgabebild Null
Dank
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var myimage: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let image = CIImage(image: myimage.image)
let filter = CIFilter(name: "CISepiaTone")
filter.setDefaults()
filter.setValue(image, forKey: kCIInputImageKey)
myimage.image = UIImage(CIImage: filter.outputImage)
self.reapplyFilter()
}
func reapplyFilter(){
let image = CIImage(image: myimage.image)
let filter = CIFilter(name: "CISepiaTone")
filter.setDefaults()
filter.setVa lue(image, forKey: kCIInputImageKey)
//ERROR HERE: fatal error: unexpectedly found nil while unwrapping an Optional value
myimage.image = UIImage(CIImage: filter.outputImage)
//ERROR
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Und siehe mein Buch, wie man ein _real_ Bild aus einem CImage extrahiert: http://www.apeth.com /iOSBook/ch15.html#_cifilter_and_ciimage – matt
Und für Swift Code: https://github.com/matnteub/Programming-iOS-Book-Examples/blob/master/bk2ch02p070filters/ch15p419filters/ViewController.swift – matt
Ich finde, dass die Lösung skizziert von http://stackoverflow.com/users/1955870/fz funktioniert (mit 'CIContext'). Besteht ein damit verbundenes Risiko? – SwiftArchitect