首先為什么要做這個東西,我們都知道CIFilter的基本用法根據(jù)名字初始化一個CIFilter對象,然后blabla設(shè)置一堆屬性,設(shè)置輸入圖片,然后就可以去獲取輸出的圖像了,那這里就有一個問題了,設(shè)計根據(jù)原圖自己設(shè)計出來了一種濾鏡效果要你實現(xiàn),并沒有告訴你rgb如何變化,飽和度,透明度等怎么變化,這是你該怎么做呢?去浩瀚的ios濾鏡中一個一個嘗試?問題是大部分的濾鏡都是需要給出參數(shù)的,有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及該濾鏡對應(yīng)參數(shù)的信息,參數(shù)信息需要指定參數(shù)范圍,參數(shù)類型,參數(shù)默認值,參數(shù)名,提供這些信息后,就可以直接查看實際效果了,不需要參數(shù)的濾鏡,將attributes配成空數(shù)組就可以了
IMG_8786.PNG
IMG_8787.PNG
點擊左邊圖片可選擇想要實現(xiàn)的效果圖片,便于與右邊生成的圖片進行對比,效果支持濾鏡疊加,重新開始嘗試時一定要點擊重置按鈕.
增加濾鏡效果請編輯filter.json
查看濾鏡對應(yīng)參數(shù):
https://developer.apple.com/library/archive/documentation/GraphicsImaging/Reference/CoreImageFilterReference/index.html#//apple_ref/doc/filter/ci/CIBoxBlur
參數(shù)支持類型:NSNumber,CIVector,CIColor,CIImage(指定圖片名,并將圖片拖入工程)
點擊左上角參數(shù)按鈕能實時查看當前合成的圖片使用的濾鏡及參數(shù)