Не будет ли проще просто сохранить исходное изображение в вашем ViewController и применить фильтр в зависимости от состояния?
Я бы предположил, что то, что вы называете UIImage
, является UIImageView
, скажите мне, если я ошибаюсь.
let inputImg = // Your original image
let isBlured = false
@IBAction func didClickButton(_ sender: Any) {
if isBlured {
myUIImageView.image = inputImg // original image
isBlured = false
} else {
let inputCIImage = CIImage(image: inputImg)
let blurFilter = CIFilter(name: "CIGaussianBlur")!
blurFilter.setValue(inputCIImage, forKey: kCIInputImageKey)
blurFilter.setValue(8, forKey: kCIInputRadiusKey)
let context = CIContext(options: nil)
if let output = blurFilter.outputImage{
if let ciImg = context.createCGImage(output, from: output.extent){
myUIImageView.image = UIImage(cgImage: ciImg)
isBlured = true
}
}
}
}