0
私はSwiftの簡単なcoreImageフィルタープロジェクトを開発しています。フィルターされた画像をオリジナルに戻すような機能を実現しようとしています。 SepiaToneフィルターに次のコードを使用しています.CIColorControls filter.Butを使用してフィルターをリセットしようとしていますが、致命的なクラッシュが発生しています。画像をリセットする方法は他にありません。SwiftのCoreImageフィルターをリセットする
@IBOutlet weak var originalImage: UIImageView!
@IBAction func SepiaToneFilter(sender: AnyObject) {
let mySepiaFilter = CIFilter(name: "CISepiaTone")
mySepiaFilter!.setValue(CIImage(image: originalImage.image!), forKey: kCIInputImageKey)
let myOutputImage : CIImage = mySepiaFilter!.outputImage!
originalImage.image = UIImage(CIImage: myOutputImage)
}
@IBAction func ResetFilter(sender: AnyObject) {
let currentFilter = CIFilter(name: "CIColorControls")
let beginImage = CIImage(image: originalImage.image!)
currentFilter!.setValue(beginImage, forKey: kCIInputImageKey
let output = currentFilter!.outputImage
let cgimg = context.createCGImage(output!, fromRect: output!.extent) **//CreateWrappedSurface() failed for a dataprovider-backed CGImageRef.fatal error: unexpectedly found nil while unwrapping an Optional value
(lldb)**
let processedImage = UIImage(CGImage: cgimg)
originalImage.image = processedImage
}
//私は私のResetFilter(UIButton)の内側に上記の関数を実行するかどうかは確認していない画像処理
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {
originalImage.image = image
self.dismissViewControllerAnimated(true, completion: nil);
}
を選択します。
ありがとうございました
ありがとうございます。あなたが投稿したコードは、テスト目的で私のサブプロジェクトで既に実行されていると思います。私は私のメインプロジェクトにCIfilterプロジェクトを実装しようとしています。私はUIImagePickerViewControllerから元のイメージを取得しています。そのイメージライブラリをイメージライブラリから取得しています。ピッカービューのイメージを元のイメージに割り当てる方法がわかりません。私もcode.pleaseを更新して、あなたの考えを知ってもらいました。私はピッカービューについて言及するのを忘れました。 – Joe
私は次のリンク[link](http://stackoverflow.com/questions/23789547/reset-button-to-original-image-from-filtered-image)で同様の質問を見つけました。しかし、私は問題をObj-cからSwiftへのコード... – Joe
私は私の答えを更新しました。おそらくあなたはすでにそれを理解しているかもしれませんが、プロパティを "userImage"のように設定して、 'UIImagePickerController'からイメージを取得したときにそれを設定することができます。 – beyowulf