示例代码下载
自动增强图像
Core Image的自动增强功能可分析图像的直方图,面部区域内容和元数据属性。然后它返回一个CIFilter对象数组,其输入参数已经设置为可以改善分析图像的值。
iOS v5.0及更高版本以及OS X v10.8及更高版本中提供了自动增强功能。
自动增强滤镜
表3-1显示了Core Image用于自动增强图像的滤镜。这些滤镜可以解决照片中常见的一些问题。
表3-1 Core Image用于增强图像的滤镜
滤镜 | 作用 |
---|---|
CIRedEyeCorrection | 由于相机闪光灯修复红色/琥珀色/白色眼睛 |
CIFaceBalance | 调整脸部的颜色,使肤色愉悦 |
CIVibrance | 增加图像的饱和度而不会扭曲肤色 |
CIToneCurve | 调整图像对比度 |
CIHighlightShadowAdjust | 调整阴影细节 |
使用自动增强滤镜
自动增强API只有两种方法:autoAdjustmentFilters和autoAdjustmentFiltersWithOptions:。在大多数情况下,您将需要使用提供选项字典的方法。
您可以设置以下选项:
- 图像方向,对CIRedEyeCorrection和CIFaceBalance滤镜很重要,因此Core Image可以准确地找到面部。
- 是否只应用红眼校正。(设置kCIImageAutoAdjustEnhance为false。)
- 是否应用除红眼校正以外的所有滤镜。(设置kCIImageAutoAdjustRedEye为false。)
autoAdjustmentFiltersWithOptions:方法返回一个选项滤镜数组,您可以将它们链接在一起并应用于分析的图像,如清单3-1所示。代码首先创建一个选项字典。然后它获取图像的方向并将其设置为键的值CIDetectorImageOrientation。
清单3-1 获取自动增强滤镜并将其应用于图像
NSDictionary *options = @{ CIDetectorImageOrientation :
[[image properties] valueForKey:kCGImagePropertyOrientation] };
NSArray *adjustments = [myImage autoAdjustmentFiltersWithOptions:options];
for (CIFilter *filter in adjustments) {
[filter setValue:myImage forKey:kCIInputImageKey];
myImage = filter.outputImage;
}
回想一下,Core Image已经设置了输入参数值以产生最佳结果。
您不必立即应用自动调整滤镜。您可以保存滤镜名称和参数值以供日后使用。保存它们可让您的应用程序稍后执行增强功能,而无需再次分析图像。