swift- 优化照片 滤镜

Core Image 能通过分析图片的各个属性,人脸的区域等进行自动优化图片。我们只需要调用 autoAdjustmentFiltersWithOptions 这个API方法获取各个自动增强滤镜来优化图片即可。不管是人物照片还是风景照均可增强效果。
(以前另外还有个叫 autoAdjustmentFilters的方法,现已废除。)

1,具体使用的滤镜如下:
(1) CIRedEyeCorrection:修复因相机的闪光灯导致的各种红眼
(2) CIFaceBalance:调整肤色
(3) CIVibrance:在不影响肤色的情况下,改善图像的饱和度
(4) CIToneCurve:改善图像的对比度
(5) CIHighlightShadowAdjust:改善阴影细节

2,autoAdjustmentFiltersWithOptions方法参数说明(字典类型):
(1) CIDetectorImageOrientation提供图像方向:使Core Image能更精确的定位到脸的位置,对CIRedEyeCorrection和CIFaceBalance滤镜很有用。
(2) kCIImageAutoAdjustEnhance设为false :只需要消除红眼,不要其他滤镜
(3) kCIImageAutoAdjustRedEye设为false :消除红眼不要,其他滤镜都要

3,效果图如下(右侧为优化后的):
原文:Swift - 自动优化照片,改善图像质量

原文:Swift - 自动优化照片,改善图像质量

原文:Swift - 自动优化照片,改善图像质量


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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值