Apply CIGaussianBlur effect on transparent image

Viewed 32

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.

0 Answers
Related