美文网首页
Core Image

Core Image

作者: 苦笑男神 | 来源:发表于2016-06-15 14:11 被阅读221次

    Core Image前言

    Core Image是iOS推出一个进行图像处理相关的库,也可以进行视频方面的处理。滤镜URL。官方文档在介绍上很详细,必须大多数滤镜效果都有一个样式结果进行查看。在使用上,可以对图片进行一定的变形、美化、叠加、马赛克等。

    每一个滤镜都会有一些相应的属性。inputImageoutputImage是所有滤镜都有的属性,均适用CIImage格式,不过后者没有体现出来。但是在导出效果图片的时候都会使用到。另外,还有一些滤镜拥有inputCenterinputScale等一些属性,至于其使用的格式,可以在上述链接中,查到。

    比如要使用CIPhotoEffectMono滤镜的效果,代码如下。

    CIImage *inputImage = [CIImage imageWithCGImage:image.CGImage];
    
    CIFilter *filter = [CIFilter filterWithName:@"CIPhotoEffectMono" keysAndValues:kCIInputImageKey,inputImage ,nil];
    CIContext *ciContext = [CIContext contextWithOptions:nil];
    
    CGImageRef cgImage = [ciContext createCGImage:filter.outputImage fromRect:inputImage.extent];
    UIImage *resultImage = [UIImage imageWithCGImage:cgImage];
    

    需要把 所需调整的图片,转成 CIImage 格式,再使用CIFilter进行初始化值。

    另外,有些滤镜会使用到CIVector的。CIVector类似一个坐标属性的东西,可以通过一维、二维、三维、四维,传入参数进行初始化。

    比如一个 CIPixellate的使用效果,顾名思义,这是用于生成马赛克效果的滤镜。其中,除了inputImage外,还有inputCenter(像素化中心位置,是指图片上的坐标,使用CIVector格式,穿入二维坐标(x,y)),以及inputScale(像素化的程度大小,NSNumber格式)。

    CIImage *inputImage = [CIImage imageWithCGImage:image.CGImage];
    
    CIFilter *filter = [CIFilter filterWithName:@"CIPixellate" keysAndValues:kCIInputImageKey,inputImage ,kCIInputCenterKey,[CIVector vectorWithX:_sourceImageView.image.size.width/2.0f Y:_sourceImageView.image.size.height/2.0f],kCIInputScaleKey,[NSNumber numberWithInteger:50],nil];
    
    CIContext *ciContext = [CIContext contextWithOptions:nil];
    
    CGImageRef cgImage = [ciContext createCGImage:filter.outputImage fromRect:inputImage.extent];
    UIImage *image = [UIImage imageWithCGImage:cgImage];
    

    2017年04月21日 更新几个链接...

    END。
    我是小侯爷。
    在魔都艰苦奋斗,白天是上班族,晚上是知识服务工作者。
    如果读完觉得有收获的话,记得关注和点赞哦。
    非要打赏的话,我也是不会拒绝的。

    相关文章

      网友评论

          本文标题:Core Image

          本文链接:https://www.haomeiwen.com/subject/jdqpdttx.html