Core Image
能通过分析图片的各个属性,人脸的区域等进行自动优化图片。我们只需要调用
autoAdjustmentFiltersWithOptions
这个API方法获取各个自动增强滤镜来优化图片即可。不管是人物照片还是风景照均可增强效果。
原文出自: www.hangge.com 转载请保留原文链接: http://www.hangge.com/blog/cache/detail_902.html
(以前另外还有个叫
autoAdjustmentFilters的方法,现已废除。)
1,具体使用的滤镜如下:
(1)
CIRedEyeCorrection:修复因相机的闪光灯导致的各种红眼
(2) CIFaceBalance:调整肤色
(3) CIVibrance:在不影响肤色的情况下,改善图像的饱和度
(4) CIToneCurve:改善图像的对比度
(5) CIHighlightShadowAdjust:改善阴影细节
2,autoAdjustmentFiltersWithOptions方法参数说明(字典类型):
(2) CIFaceBalance:调整肤色
(3) CIVibrance:在不影响肤色的情况下,改善图像的饱和度
(4) CIToneCurve:改善图像的对比度
(5) CIHighlightShadowAdjust:改善阴影细节
(1)
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
var
originalImage:
UIImage
= {
return
UIImage
(named:
"IMG_0473.jpg"
)
}()!
lazy
var
context:
CIContext
= {
return
CIContext
(options:
nil
)
}()
override
func
viewDidLoad() {
super
.viewDidLoad()
}
override
func
didReceiveMemoryWarning() {
super
.didReceiveMemoryWarning()
}
//优化图片
@IBAction
func
autoAdjustImage(sender:
AnyObject
) {
var
inputImage =
CIImage
(image: originalImage)
let
options:[
String
:
AnyObject
] = [
CIDetectorImageOrientation
:1]
//图片方向
let
filters = inputImage!.autoAdjustmentFiltersWithOptions(options)
//遍历所有滤镜,依次处理图像
for
filter
:
CIFilter
in
filters {
filter
.setValue(inputImage, forKey: kCIInputImageKey)
inputImage =
filter
.outputImage
}
let
cgImage = context.createCGImage(inputImage!, fromRect: inputImage!.extent)
self
.imageView.image =
UIImage
(
CGImage
: cgImage)
}
//还原图片
@IBAction
func
resetImage(sender:
AnyObject
) {
self
.imageView.image = originalImage
}
}
|
原文出自: www.hangge.com 转载请保留原文链接: http://www.hangge.com/blog/cache/detail_902.html