How to blur an existing image in a UIImageView with Swift?

前端 未结 11 1932
自闭症患者
自闭症患者 2020-12-28 16:48

The setup is simple.

  • A ViewController with UIImageView that has an image assigned.
  • A UIButton that when clicked blurs the image in the UIImageView.<
11条回答
  •  轮回少年
    2020-12-28 17:43

    my extension

    extension UIImage {
        
        func blurImage(radius: CGFloat = 10) -> UIImage? {
            guard let cgImage = cgImage else { return nil }
            let inputCIImage = CIImage(cgImage: cgImage)
            let context = CIContext(options: nil)
            
            let filter = CIFilter(name: "CIGaussianBlur")
            filter?.setValue(inputImage, forKey: kCIInputImageKey)
            filter?.setValue(radius, forKey: kCIInputRadiusKey)
            let outputImage = filter?.outputImage
            
            if let outputImage = outputImage,
                let cgImage = context.createCGImage(outputImage, from: inputImage.extent) {
                
                return UIImage(
                    cgImage: cgImage,
                    scale: scale,
                    orientation: imageOrientation
                )
            }
            return nil
        }
     }
    

提交回复
热议问题