核心图像过滤器的输出图像在 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 通道的图片,例如图标或其他东西。用照片换你的照片再试一次。
我正在使用 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 通道的图片,例如图标或其他东西。用照片换你的照片再试一次。