余生请多指教
愿有人陪你颠沛流离,愿你一生努力不被时光辜负。

在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]];就可以了

posted on 2016-08-18 17:10  余生请多指教  阅读(689)  评论(0编辑  收藏  举报