项目中要实现高斯模糊的效果,今天看了下core image这块的内容, 主要包括ciimage、cifilter、cicontext、cidetector(检测)、cifeature(特征)等类。
今天先记录下ciimage、cifilter、cicontext三个类的使用。
一、基本的滤镜效果需要以下步骤
1.创建ciimage对象
2.创建cicontext对象用作画布
3.创建cifilter对象
4.输出滤镜
二、创建上面三个对象的api
1.创建ciimage对象 主要通过以下方法( 方法有好多种 具体查看类ciimage)
2.创建cicontext对象
cicontext 构造函数contextwithoptions:的输入是一个nsdictionary。 它规定了各种选项,包括颜色格式以及内容是否应该运行在cpu或是gpu上。
在该类中还有一些其他方法
1、创建滤镜对象
2、上面创建滤镜对象时需要filtername,那怎么查看name以及每个cifilter对象的属性呢?
在上面的代码中输出以下代码
从上面的输出结果我们可以看到filter有ciattributefiltercategories、ciattributefilterdisplayname、ciattributefiltername、inputimage、inputradius等属性。
在ciattributefiltercategories中可以看到滤镜有cicategoryblur, cicategorystillimage,cicategoryvideo, cicategorybuiltin种,在cifilter类中有下面的两个方法能遍历出所有的滤镜名
获得到滤镜名之后就可以通过attributes属性查看filter对象的属性 ,通过kvc来设置属性值
1、通过uiimage的imagewithciimage方法
2、通过通过uiimage的imagewithcgimage方法 此方法要用到cicontext
上面两种方法中,第一个每次调用都会生成一个cicontext。cicontext本来是可以重用以便提高性能和效率的。
5.完整代码
6.效果
