*滤镜:给图像添加效果
一、介绍:
1、框架介绍
(1)CoreImage现在自动导入了
(2)是一个图像框架它基于OpenGL顶层创建底层则用着色器来处理图像
(3)它利用了GPU基于硬件加速来处理图像
(4)CoreImage中有很多滤镜
(5)它们能够一次给予一张图像或者视频帧多种视觉效果->滤镜链
(6)而且滤镜可以连接起来组成一个滤镜链把滤镜效果叠加起来处理图像
2、类的介绍
(1)CIImage:保存图像数据的类
CGImageRef->图像中的数据
(2)CIFilter:滤镜类图片属性进行细节处理的类它对所有的像素进行操作用键-值(KVC)来设置
(3)CIContext:上下文是实现对图像处理的具体对象->滤镜对象输出的图像并不是合成之后的图像需要使用图像处理的上下文合并输出的图像
3、效果介绍100+效果可以通过attributes查找需要设置的参数内容
按效果分类:
kCICategoryDistortionEffect扭曲效果,比如bump、旋转、hole
kCICategoryGeometryAdjustment 几何开着调整,比如仿射变换、平切、透视转换
kCICategoryCompositeOperation合并,比如源覆盖(source over)、最小化、源在顶(source atop)、色彩混合模式
kCICategoryHalftoneEffect Halftone效果,比如screen、line
screen、hatched
kCICategoryColorAdjustment色彩调整,比如伽马调整、白点调整、曝光
kCICategoryColorEffect色彩效果,比如色调调整、posterize
kCICategoryTransition图像间转换,比如dissolve、disintegrate with mask、swipe
kCICategoryTileEffect瓦片效果,比如parallelogram、triangle
kCICategoryGenerator图像生成器,比如stripes、constant color、checkerboard
kCICategoryGradient渐变,比如轴向渐变、仿射渐变、高斯渐变
kCICategoryStylize风格化,比如像素化、水晶化
kCICategorySharpen锐化、发光
kCICategoryBlur模糊,比如高斯模糊、焦点模糊、运动模糊
按使用场景分类:
kCICategoryStillImage用于静态图像
kCICategoryVideo用于视频
kCICategoryInterlaced用于交错图像
kCICategoryNonSquarePixels用于非矩形像素
kCICategoryHighDynamicRange用于HDR
二、使用:
1.查询效果分类里面的效果
filterNamesInCategory:
2.查询效果的属性
[CIFilter filterWithName:XXX].attributes
3、步骤
(1)实例CIImage
->先把UIImage->CGImageRef -> CIImage
(2)创建CIFilter滤镜并给滤镜设置属性(KVC)
(3)创建CIContext上下文
(4)合并滤镜输出的图像->得到一个合并之后的图像
(5)赋给UIImageView对象进行显示
(6)如果想使用滤镜链可以再次叠加效果
精简总步骤:
1.查询效果分类中包含什么效果:filterNamesInCategory:
(1)按住command点击CIFilter进入接口文件找到第128行-148行全部都是效果分类
(2)选择其中某一个分类NSLog -> [CIFilter filterNamesInCategory:刚才拷贝的分类]; ->打印出来的是这个分类包含的所有效果->拷贝选择其中的某一个效果
NSLog(@"%@",[CIFilter filterNamesInCategory:kCICategoryColorEffect]);
2.查询使用的效果中可以设置什么属性(KVC)attributes
NSLog -> [CIFilter filterWithName:刚才拷贝选择其中的某一个效果].attributes ->得到这个滤镜所有可以设置的属性
使用步骤
1.需要添加滤镜的源图
2.初始化一个滤镜设置滤镜(根据查询到的属性来设置)
3.把滤镜输出的图像和滤镜合并CIContext ->得到一个合成之后的图像
4.展示
网友评论