高斯模糊效果的简单实现

这里简单介绍一下高斯模糊效果.这里介绍的是coreImage,原理很简单就是抓取现在当前的image,然后设置高斯模糊.

首先是获取当前的image:(两种方法)

方法一:

- (UIImage *)snapshot:(UIView *)view

{

    UIGraphicsBeginImageContextWithOptions(view.bounds.sizeYES0);

    

    [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES];

    

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

    

    UIGraphicsEndImageContext();

    

    return image;

}

方法二

- (UIImage *)imageOfView:(UIView *)view

{

    UIGraphicsBeginImageContext(view.bounds.size); //currentView 当前的view

    

    [view.layer renderInContext:UIGraphicsGetCurrentContext()];

    

    UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext();

    

    UIGraphicsEndImageContext();

    

    return screenImage;

}

//接下来这个方法就是获取全屏截图,将全屏图片高斯模糊并添加到一个view上

- (void)addToView:(UIView *)view{

    UIImage *screenImage = [self snapshot:view];

    UIImageView *imageView = [[UIImageView allocinitWithFrame:CGRectMake(00kwidthkheight)];

    imageView.userInteractionEnabled = YES;

    [view addSubview:imageView];

    

    CIContext *context = [CIContext contextWithOptions:nil];

    UIImage *oldImage = screenImage;

    CIImage *inputImage = [[CIImage allocinitWithImage:oldImage];

    // create gaussian blur filter

    CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];

    [filter setValue:inputImage forKey:kCIInputImageKey];

    [filter setValue:[NSNumber numberWithFloat:20.0forKey:@"inputRadius"];

    // blur image

    CIImage *result = [filter valueForKey:kCIOutputImageKey];

    CGImageRef cgImage = [context createCGImage:result fromRect:[result extent]];

    UIImage *image = [UIImage imageWithCGImage:cgImage];

    CGImageRelease(cgImage);

    imageView.image = image;

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值