当前位置:   article > 正文

iOS中滤镜的使用(二)滤镜组合_ios cifilter cimasktoalpha

ios cifilter cimasktoalpha

iOS中滤镜的使用(二)

滤镜组合



首先 要加载图片并转化为CIImage

CIImage *ciImage = [[CIImage alloc] initWithImage:[UIImage imageNamed:@"IMG_0160"]];
  • 1

其次,创建filter滤镜

 CIFilter *filterOne = [CIFilter filterWithName:@"CIPixellate"];//马赛克滤镜

    NSLog(@"%@",filterOne.attributes);
    [filterOne setValue:ciImage  forKey:kCIInputImageKey];
    [filterOne setDefaults];
    CIImage *outImage = [filterOne valueForKey:kCIOutputImageKey];

    CIFilter *filterTwo = [CIFilter filterWithName:@"CIHueAdjust"];//饱和度滤镜

    [filterTwo setValue:outImage  forKey:kCIInputImageKey];
    [filterTwo setDefaults];

    NSLog(@"%@",filterTwo.attributes);//打印可修改的属性
    [filterTwo setValue:@(3.14) forKey:kCIInputAngleKey];//位置不能改变

    CIImage *outImageTwo = [filterTwo valueForKey:kCIOutputImageKey];
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

然后,用CIContext将滤镜中的图片渲染出来,原因,导出图片过过程中用到CGImageRef。

CIContext *context = [CIContext contextWithOptions:nil];

CGImageRef cgImage = [context createCGImage:outImage fromRect:[outImage extent]];
  • 1
  • 2
  • 3

最后,导出图片,注意内存的释放

 UIImage *showImage = [UIImage imageWithCGImage:cgImage];

CGImageRelease(cgImage);
  • 1
  • 2
  • 3

剩下的工作就是加载马赛克图片了

 UIImageView *imageView = [[UIImageView alloc] initWithFrame: CGRectMake(
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/125040
推荐阅读
相关标签
  

闽ICP备14008679号