Я разрабатываю простой проект фильтра CoreImage в Swift. Я пытаюсь достичь такой функции, как возврат отфильтрованного изображения обратно к оригиналу. Я использую следующий код для фильтра SepiaTone, и я пытаюсь сбросить фильтр с помощью фильтра CIColorControls. Но я становлюсь фатальным crash.I интересно, есть ли другой способ сбросить изображение.Сброс фильтра CoreImage в Swift
@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
Я нашел аналогичный вопрос в следующей ссылке [link] (http://stackoverflow.com/questions/23789547/reset-button-to-original-image-from-filtered-image). Но у меня возникают проблемы с преобразованием код от Obj-c до Swift ... – Joe
Я обновил свой ответ. Возможно, вы уже поняли это, но вы можете просто установить свойство как нечто вроде «userImage» и установить это, когда вы получите изображение из 'UIImagePickerController'. – beyowulf