簡體   English   中英

為什么我不能在我的Swift iOS應用程序中使用CIFilter將我的圖像反轉回原始圖像

[英]Why can't I invert my image back to original with CIFilter in my Swift iOS app

我正在開發一個簡單的應用程序。 它有一個帶有預加載圖像和按鈕的圖像視圖。 按下按鈕時,應反轉圖像視圖中的圖像。

它第一次工作,但我希望當我再次按下按鈕時,它會將圖像反轉回原始形狀。 然而,在第二次按下按鈕時它會崩潰。

以下是ViewController.swift的相關代碼:

    @IBOutlet weak var imageView: UIImageView!
    @IBOutlet weak var invertButton: UIButton!

    @IBAction func invertButtonPressed(sender: UIButton) {
        let beginImage = CIImage(image: imageView.image!)
        let filter = CIFilter(name: "CIColorInvert")!
        filter.setValue(beginImage, forKey: kCIInputImageKey)
        imageView.image = UIImage(CIImage: (filter.outputImage)!)
    }

基本上, beginImage第二次變為nil ,我不知道為什么。 我已經嘗試通過將那些密集線分成盡可能多的let賦值進行調試,但是CIImage構造函數出現了神秘的事情。 有任何想法嗎?

問題是這一行:

imageView.image = UIImage(CIImage: (filter.outputImage)!)

你不能這樣做。 CIImage並沒有神奇地變成UIImage。 圖像視圖需要基於位圖的圖像,而不是基於CIImage的圖像。 您必須渲染 CIImage以將其轉換為UIImage,方法是獲取CIContext並告訴它創建CGImage或將CIImage繪制到圖形上下文中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM