Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Very slow UIImage blurring on iOS

I would like to apply blur on my image view. I have this code for blurring:

- (UIImage *)applyBlurOnImage: (UIImage *)imageToBlur withRadius: (CGFloat)blurRadius
{
    CIImage *originalImage = [CIImage imageWithCGImage: imageToBlur.CGImage];
    CIFilter *filter = [CIFilter filterWithName: @"CIGaussianBlur" keysAndValues: kCIInputImageKey, originalImage, @"inputRadius", @(blurRadius), nil];
    CIImage *outputImage = filter.outputImage; CIContext *context = [CIContext contextWithOptions:nil];
    CGImageRef outImage = [context createCGImage: outputImage fromRect: [outputImage extent]];
    return [UIImage imageWithCGImage: outImage];
}

But blurring happens very slow for screenshot of my UIView on iPad.

Is there any faster way to do this?

like image 548
AYMADA Avatar asked Sep 06 '25 02:09

AYMADA


2 Answers

Apple released code at WWDC that does what you need.

It is a category on UIImage and uses the Accelerate framework for fast image processing. If you have a developer account you can grab the UIImage category here.

like image 166
Rafa de King Avatar answered Sep 07 '25 23:09

Rafa de King


Try this library. It is fairly new and quite fast. Remember that blur is either way quite nasty thing for the device to process, so it won't be zen-like, but it's very good.

OR - you can refer to this question that has some high quality answers.

like image 23
Michal Avatar answered Sep 07 '25 23:09

Michal