App设计时往往会用到一些模糊效果。iOS目前已提供一些模糊API可以让我们方便是使用。一种是使用Core Image,另一种是使用Accelerate.Framework中的vImage API。
使用Core Image进行模糊
Core Image很早在Mac系统中得到应用,后来这个Framework也开始应用到iOS,不过直到iOS6.0才开始支持模糊。这个API调用起来很方便简洁。
- - (UIImage *)blurryImage:(UIImage *)image
- withBlurLevel:(CGFloat)blur {
- CIImage *inputImage = [CIImage imageWithCGImage:image.CGImage];
- CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"
- keysAndValues:kCIInputImageKey, inputImage,
- @"inputRadius", @(blur),
- nil];
-
- CIImage *outputImage = filter.outputImage;
-
- CGImageRef outImage = [self.context createCGImage:outputImage
- fromRect:[outputImage extent]];
- return [UIImage imageWithCGImage:outImage];
- }
使用vImage API进行模糊
iOS5.0中新增了vImage API可以使用,它属于Accelerate.Framework,所以如果你要使用它要在工程中加入这个Framework。模糊算法使用的是vImageBoxConvolve_ARGB8888这个函数。