0
我正在Swift中开发简单的coreImage过滤器项目。我试图实现将过滤后的图像重置为原始的功能。我为SepiaTone过滤器使用了以下代码,并且正在尝试使用CIColorControls过滤器重置过滤器。但是,我正在致命crash.I想知道是否有任何其他方式来重置图像。在Swift中重置CoreImage过滤器
@IBOutlet weak var originalImage: UIImageView!
@IBAction func SepiaToneFilter(sender: AnyObject) {
let mySepiaFilter = CIFilter(name: "CISepiaTone")
mySepiaFilter!.setValue(CIImage(image: originalImage.image!), forKey: kCIInputImageKey)
let myOutputImage : CIImage = mySepiaFilter!.outputImage!
originalImage.image = UIImage(CIImage: myOutputImage)
}
@IBAction func ResetFilter(sender: AnyObject) {
let currentFilter = CIFilter(name: "CIColorControls")
let beginImage = CIImage(image: originalImage.image!)
currentFilter!.setValue(beginImage, forKey: kCIInputImageKey
let output = currentFilter!.outputImage
let cgimg = context.createCGImage(output!, fromRect: output!.extent) **//CreateWrappedSurface() failed for a dataprovider-backed CGImageRef.fatal error: unexpectedly found nil while unwrapping an Optional value
(lldb)**
let processedImage = UIImage(CGImage: cgimg)
originalImage.image = processedImage
}
//选取图像处理
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {
originalImage.image = image
self.dismissViewControllerAnimated(true, completion: nil);
}
我不知道怎么跑我ResetFilter(UIButton的)内部的上述功能。
在此先感谢
感谢代码。我相信,您发布的代码已经在我的子项目中运行,用于测试目的。我正在尝试将CIfilter项目实现到我的主项目,我从UIImagePickerViewController获取从照片库中获取图像的原始图像。我不知道如何将pickerView图像分配为原始图像,并且我还更新了我的代码。请仔细查看并让我知道您的想法。谢谢,我不喜欢PickerView。 – Joe
我在以下链接中找到类似的问题[链接](http://stackoverflow.com/questions/23789547/reset-button-to-original-image-from-filtered-image)。但是,我遇到了麻烦转换代码从Obj-c到Swift ... – Joe
我更新了我的答案。也许你已经知道了,但你可以设置一个属性为“userImage”,并设置当你从UIImagePickerController获得图像。 – beyowulf