图文/图像处理

ios系统滤镜可视化

2019-06-27  本文已影响0人  逃之不桃

首先为什么要做这个东西,我们都知道CIFilter的基本用法根据名字初始化一个CIFilter对象,然后blabla设置一堆属性,设置输入图片,然后就可以去获取输出的图像了,那这里就有一个问题了,设计根据原图自己设计出来了一种滤镜效果要你实现,并没有告诉你rgb如何变化,饱和度,透明度等怎么变化,这是你该怎么做呢?去浩瀚的ios滤镜中一个一个尝试?问题是大部分的滤镜都是需要给出参数的,有CIVector,CIColor,NSNumber等等,范围如此之大,该如何着手呢,着实让人蛋疼不已,为解决此问题,对滤镜进行可视化.

达到的效果:
新增一种滤镜可视效果,只需要在json中增加配置如下:

{
        "filterName":"CIColorPolynomial",
        "attributes":[
            {
                "name": "inputRedCoefficients",
                "type": "CIVector",
                "defaultValues": [0,1,0,0],
                "max":[1,5,2,2],
                "min":[-1,-5,-2,-2]
            },
            {
                "name": "inputGreenCoefficients",
                "type": "CIVector",
                "defaultValues": [0,1,0,0],
                "max":[1,5,2,2],
                "min":[-1,-5,-2,-2]
            },
            {
                "name": "inputBlueCoefficients",
                "type": "CIVector",
                "defaultValues": [0,1,0,0],
                "max":[1,5,2,2],
                "min":[-1,-5,-2,-2]
            },
            {
                "name": "inputAlphaCoefficients",
                "type": "CIVector",
                "defaultValues": [0,1,0,0],
                "max":[1,2,2,2],
                "min":[-1,-2,-2,-2]
            }
        ]
    }

指定filterName及该滤镜对应参数的信息,参数信息需要指定参数范围,参数类型,参数默认值,参数名,提供这些信息后,就可以直接查看实际效果了,不需要参数的滤镜,将attributes配成空数组就可以了

IMG_8786.PNG
IMG_8787.PNG
点击左边图片可选择想要实现的效果图片,便于与右边生成的图片进行对比,效果支持滤镜叠加,重新开始尝试时一定要点击重置按钮.
增加滤镜效果请编辑filter.json
查看滤镜对应参数:
https://developer.apple.com/library/archive/documentation/GraphicsImaging/Reference/CoreImageFilterReference/index.html#//apple_ref/doc/filter/ci/CIBoxBlur
参数支持类型:NSNumber,CIVector,CIColor,CIImage(指定图片名,并将图片拖入工程)
点击左上角参数按钮能实时查看当前合成的图片使用的滤镜及参数

Demo地址:https://github.com/taozaizai/VisualFilter.git

上一篇下一篇

猜你喜欢

热点阅读