Swift Core Image 滤镜过滤图像
Swift Core Image filter over filtered image
我的问题如下:我用 uiviewcontroller 和 uiview(FilterView) 制作了一个简单的应用程序。在我的视图中,我添加了一个 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
}
}
现在,当我按下按钮时,过滤器会按我希望的方式应用,但如果您之后再次按下它,则会出现致命错误 'unexpectedly found nil while unwrapping an Optional value'。这是我认为的图像(我为 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)
}
我的问题如下:我用 uiviewcontroller 和 uiview(FilterView) 制作了一个简单的应用程序。在我的视图中,我添加了一个 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
}
}
现在,当我按下按钮时,过滤器会按我希望的方式应用,但如果您之后再次按下它,则会出现致命错误 'unexpectedly found nil while unwrapping an Optional value'。这是我认为的图像(我为 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)
}