(以前另外还有个叫
autoAdjustmentFilters的方法,现已废除。)
1,具体使用的滤镜如下:
(1)
CIRedEyeCorrection:修复因相机的闪光灯导致的各种红眼
(2) CIFaceBalance:调整肤色
(3) CIVibrance:在不影响肤色的情况下,改善图像的饱和度
(4) CIToneCurve:改善图像的对比度
(5) CIHighlightShadowAdjust:改善阴影细节
2,autoAdjustmentFiltersWithOptions方法参数说明(字典类型):
(2) CIFaceBalance:调整肤色
(3) CIVibrance:在不影响肤色的情况下,改善图像的饱和度
(4) CIToneCurve:改善图像的对比度
(5) CIHighlightShadowAdjust:改善阴影细节
CIDetectorImageOrientation提供图像方向:使Core Image能更精确的定位到脸的位置,对CIRedEyeCorrection和CIFaceBalance滤镜很有用。
(2)
kCIImageAutoAdjustEnhance设为false :只需要消除红眼,不要其他滤镜
(3)
kCIImageAutoAdjustRedEye设为false :消除红眼不要,其他滤镜都要
3,效果图如下(右侧为优化后的):
4,代码如下(所有滤镜都使用):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
import
UIKit
class
ViewController
:
UIViewController
{
@IBOutlet
weak
var
imageView:
UIImageView
!
//图片原图
lazy
originalImage:
UIImage
= {
return
(named:
"IMG_0473.jpg"
)
}()!
context:
CIContext
= {
return
CIContext
(options:
nil
)
}()
override
func
viewDidLoad() {
super
.viewDidLoad()
}
didReceiveMemoryWarning() {
.didReceiveMemoryWarning()
}
//优化图片
@IBAction
autoAdjustImage(sender:
AnyObject
) {
inputImage =
CIImage
(image: originalImage)
filters = inputImage!.autoAdjustmentFiltersWithOptions(options)
//遍历所有滤镜,依次处理图像
for
filter
CIFilter
in
filters {
.setValue(inputImage,forKey: kCIInputImageKey)
inputImage =
.outputImage
}
cgImage = context.createCGImage(inputImage!,fromRect: inputImage!.extent)
self
.imageView.image =
(
CGImage
: cgImage)
}
//还原图片
resetImage(sender:
) {
.imageView.image = originalImage
}
}
|
原文出自: www.hangge.com 转载请保留原文链接: http://www.hangge.com/blog/cache/detail_902.html