I'm trying to apply CIGaussianBlur effect on transparent image. The problem is that after applying this effect on my image it loses transparency and becomes black.
Code that I'm using:
func blurImage(image: UIImage) -> UIImage? {
let context = CIContext(options: nil)
let inputImage = CIImage(image: image)
let originalOrientation = image.imageOrientation
let originalScale = image.scale
let filter = CIFilter(name: "CIGaussianBlur")
filter?.setValue(inputImage, forKey: kCIInputImageKey)
filter?.setValue(5.0, forKey: kCIInputRadiusKey)
let outputImage = filter?.outputImage
var cgImage:CGImage?
if let outputImage = outputImage <--HERE it's already black!
{
cgImage = context.createCGImage(outputImage, from: (inputImage?.extent)!)
}
if let cgImageA = cgImage
{
return UIImage(cgImage: cgImageA, scale: originalScale, orientation: originalOrientation)
}
return nil
}
edit: keep in mind that inputAVector key is not working with CIGaussianBlur.