核心图像过滤器的输出图像第二次在 UIImage 上运行时为零
Posted
技术标签:
【中文标题】核心图像过滤器的输出图像第二次在 UIImage 上运行时为零【英文标题】:Core image filter's output image is nil second time it is run on a UIImage 【发布时间】:2015-02-06 20:06:48 【问题描述】:我正在使用 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.
【问题讨论】:
【参考方案1】:我之前也遇到过同样的问题。你的代码没有问题。我认为你使用的图片有问题。这个没有CIContext
的基本制作过程无法处理带有alpha通道的图片。我认为您可能正在使用带有 alpha 通道的图片,例如图标或其他东西。用照片更改您的照片,然后再试一次。
【讨论】:
以上是关于核心图像过滤器的输出图像第二次在 UIImage 上运行时为零的主要内容,如果未能解决你的问题,请参考以下文章