我正在使用 swift 2,在按照教程使用选择器选择图像,然后在按下按钮时应用过滤器时遇到了一个奇怪的问题。
我的流程是这样的:
- 单击按钮使用imagePickerControl选择图像 在 ImageView 的图像中显示它
- 点击按钮处理过滤器 在该图像上
这是图像选择器的代码:
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {
if let pickedImage = image as? UIImage {
imageView.contentMode = .ScaleAspectFit
imageView.image = pickedImage
}
dismissViewControllerAnimated(true, completion: nil)
}
这部分进行处理/过滤:
func setProcessFilter() {
var originalImage = CIImage(image: imageView.image!)
if originalImage !== nil {
var filter = CIFilter(name: "CIPhotoEffectProcess")
filter?.setDefaults()
filter?.setValue(originalImage, forKey: kCIInputImageKey)
var imageOutput = filter!.outputImage
var newImage = UIImage(CIImage: imageOutput!)
imageView.image = newImage
} else {
print("problem!")
}
}
有趣的是,第一次单击按钮时,此方法有效,但第二次原始图像变为空。我不确定为什么会发生这种情况?
最佳答案
对于在学习教程时遇到此问题的任何人,只需创建一个 var:
var filterImage : CIImage!
一旦图像选择器选择了图像,将其推送到那里:
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {
if let pickedImage = image as? UIImage {
imageView.contentMode = .ScaleAspectFit
filterImage = CIImage(image: pickedImage)
imageView.image = pickedImage
}
dismissViewControllerAnimated(true, completion: nil)
}
关于ios - imageView图像返回null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32319917/