记录自己下使用CoreImage实现图片的滤镜效果
不同效果都有其特定的名称,以下是我用到的一些滤镜名:
fileterName
{
CLDefaultEmptyFilter,
CISRGBToneCurveToLinear,
CIVignetteEffect,
CIPhotoEffectInstant,
CIPhotoEffectProcess,
CIPhotoEffectTransfer,
CISepiaTone,
CIPhotoEffectChrome,
CIPhotoEffectFade,
CILinearToSRGBToneCurve,
CIPhotoEffectTonal,
CIPhotoEffectNoir,
CIPhotoEffectMono,
CIColorInvert
}
要想实现滤镜效果,得借助CIFilter对象,
1.将UIImage对象转换成CIImage对象作为CIFilter的输入inputImage
CIImage *ciImage = [[CIImage alloc] initWithImage:image];
CIFilter *filter = [CIFilter filterWithName:filterName keysAndValues:kCIInputImageKey, ciImage, nil];
2.通过不同滤镜名输出不同的outputImage
CIImage *outputImage = [filter outputImage];
3.再把outputImage想办法转换成UIImage对象返回,则得到我们滤镜处理后的图片。
CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef cgImage = [context createCGImage:outputImage fromRect:[outputImage extent]];
UIImage *result = [UIImage imageWithCGImage:cgImage];
好像滤镜效果还有很多,不过我暂时只用到这些。