在iOS和OS X平台上,Core Image都提供了大量的滤镜(Filter),这也是Core Image库中比较核心的东西之一。按照官方文档记载,在OS X上有120多种Filter,而在iOS上也有90多。
//使用Core Image做模糊
-(UIImage *)changeImageVague:(NSString *)imgUrl withBlurNumber:(CGFloat)blur
{
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *image = [CIImage imageWithContentsOfURL:[NSURL URLWithString:imgUrl]];//URL图片
CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];
[filter setValue:image forKey:kCIInputImageKey];
[filter setValue:@(blur) forKey: @"inputRadius"];//设置多少像素的模糊
CIImage *result = [filter valueForKey:kCIOutputImageKey];
CGImageRef outImage = [context createCGImage: result fromRect:[result extent]];
UIImage * blurImage = [UIImage imageWithCGImage:outImage];
return blurImage;
}
-(UIImage *)coreBlurImage:(UIImage *)img
withBlurNumber:(CGFloat)blur {
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *image = [[CIImage alloc] initWithCGImage:img.CGImage];//本地图片
CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];
[filter setValue:image forKey:kCIInputImageKey];
[filter setValue:@(blur) forKey: @"inputRadius"];
CIImage *result = [filter valueForKey:kCIOutputImageKey];
CGImageRef outImage = [context createCGImage: result fromRect:[result extent]];
UIImage * blurImage = [UIImage imageWithCGImage:outImage];
return blurImage;
}
这样写会出现一个问题,就是图片会有白边,只要将CGImageRef outImage = [context createCGImage: result fromRect:[result extent]];改为CGImageRef outImage = [context createCGImage: result fromRect:[image extent]];就可以了