Как получить оригинальное изображение из фильтров - PullRequest
0 голосов
/ 31 мая 2019

У меня есть изображение с фильтрами, теперь я хочу вернуться к исходному изображению одним нажатием кнопки.

не уверен, если мне нужно сделать констанцию ​​для этого

@IBAction func Blur(_ sender: Any) {
    let inputImg = UIimage.image!

    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){
            UIimage.image = UIImage(cgImage: ciImg)
        }
    }
}

1 Ответ

0 голосов
/ 31 мая 2019

Не будет ли проще просто сохранить исходное изображение в вашем 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
            }
        }
    }
}
...