核心图像过滤器的输出图像在 UIImage 上第二次为 运行 时为零

Core image filter's output image is nil second time it is run on a UIImage

我正在使用 Core Image 对图像应用棕褐色滤镜。我将过滤器设置为点击手势。我第一次按下点击手势时,过滤器应用于图像视图的图像,我将输出添加回图像视图。当我第二次按下屏幕时,应用程序崩溃并显示输出为零。有人知道为什么会这样吗?代码和错误信息图片如下。

    import UIKit

class ViewController: UIViewController, UIGestureRecognizerDelegate {

    @IBOutlet weak var imageview: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        var gestureRecognizer = UITapGestureRecognizer(target: self, action: "tap")
        gestureRecognizer.delegate = self
        self.view.addGestureRecognizer(gestureRecognizer)

    }

    func tap(){

        // 2
        let beginImage = CIImage(image: imageview.image)

        // 3
        let filter = CIFilter(name: "CISepiaTone")

        filter.setValue(beginImage, forKey: kCIInputImageKey)
        imageview.image = UIImage(CIImage: filter.outputImage)


    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

我之前遇到过同样的问题。你的代码没有问题。我认为您使用的图片有问题。这个没有CIContext的基本制作过程无法处理带alpha通道的图片。我认为您可能正在使用带有 alpha 通道的图片,例如图标或其他东西。用照片换你的照片再试一次。