gpt4 book ai didi

ios - Swift Core Image 过滤器过滤图像

转载 作者:行者123 更新时间:2023-11-29 01:44:29 25 4
gpt4 key购买 nike

我的问题如下:我用 uiviewcontroller 和 uiview(FilterView) 制作了一个简单的应用程序。在我的 View 中,我添加了一个 UIButton 和一个 UIImageView。我想要的是,当您按下按钮时,将对图像应用 SepiaFilter:

 func sepiaButtonClicked( sender:UIButton ){

let context = CIContext(options: nil)
let image = CIImage(image: theView.imageView.image)

let filter = CIFilter(name: "CISepiaTone", withInputParameters: [
kCIInputImageKey : image,
kCIInputIntensityKey : NSNumber(double: 0.5)

])
let imageWithFilter = filter.outputImage

theView.imageView.image = UIImage(CIImage: imageWithFilter)

}

theView指的是上面有这段代码的UIView

var theView:FilterView {
get {
return view as! FilterView
}
}

现在,当我按下按钮时,过滤器会按我希望的方式应用,但如果您之后再次按下它,则会出现 fatal error “在展开可选值时意外发现 nil”。这是我认为的图像(我为 kCIInputImageKey 输入的图像)。

谁能给我解释一下为什么会这样?我无法弄清楚第一次和第二次单击按钮之间的区别。我怎么看这段代码只是用新的 UIImage 替换了 UIImage 并且它应该准备好再次触发?

提前致谢,

彼得·扬·德布劳内

最佳答案

试试这个:

 func sepiaButtonClicked( sender:UIButton ){
var CurrentImage = self.imageView.image
var inputImage = CIImage(image:CurrentImage)
let filter = CIFilter(name:"CISepiaTone")
filter.setValue(inputImage, forKey: kCIInputImageKey)
filter.setValue(0.5, forKey: kCIInputIntensityKey)
let context = CIContext(options: nil)
let imageWithFilter = filter.outputImage
let NewOuptutImage = context.createCGImage(imageWithFilter , fromRect: imageWithFilter.extent())
imageView.image = UIImage(CGImage: NewOuptutImage)
}

关于ios - Swift Core Image 过滤器过滤图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32080521/

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