gpt4 book ai didi

ios - 为什么我不能在我的 Swift iOS 应用程序中使用 CIFilter 将我的图像反转回原始图像

转载 作者:搜寻专家 更新时间:2023-11-01 06:43:38 29 4
gpt4 key购买 nike

我正在开发一个简单的应用程序。它有一个带有预加载图像和按钮的 ImageView 。当按下按钮时, ImageView 中的图像应该反转。

它第一次工作,但我希望它能在我再次按下按钮时将图像反转回原来的形式。然而,它在第二次按下按钮时崩溃了。

下面是来自 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。 ImageView 需要基于位图的图像,而不是基于 CIImage 的图像。您必须渲染 CIImage 以将其转换为 UIImage,方法是获取 CIContext 并告诉它创建 CGImage 或将 CIImage 绘制到图形上下文中。

关于ios - 为什么我不能在我的 Swift iOS 应用程序中使用 CIFilter 将我的图像反转回原始图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32875114/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com