I need to apply a CIGaussianBlur filter only on a small part of an image like this:
Is there any way to do this? For example when I apply the filter perhaps I think that I have to specify the dimension of the filter (someone like CGRectMake).
var imageToBlur = CIImage(image: coro.logo)
var blurfilter = CIFilter(name: "CIGaussianBlur")
blurfilter.setValue(imageToBlur, forKey: "inputImage")
blurfilter.setValue(2, forKey: "inputRadius")
var resultImage = blurfilter.valueForKey("outputImage") as! CIImage
var blurredImage = UIImage(CIImage: resultImage)
self.immagineCoro.image = blurredImage
Try to use this
func blurImage(image:UIImage, forRect rect: CGRect) -> UIImage?
{
let context = CIContext(options: nil)
let inputImage = CIImage(CGImage: image.CGImage!)
let filter = CIFilter(name: "CIGaussianBlur")
filter?.setValue(inputImage, forKey: kCIInputImageKey)
filter?.setValue((70.0), forKey: kCIInputRadiusKey)
let outputImage = filter?.outputImage
var cgImage:CGImageRef?
if let asd = outputImage
{
cgImage = context.createCGImage(asd, fromRect: rect)
}
if let cgImageA = cgImage
{
return UIImage(CGImage: cgImageA)
}
return nil
}