亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Swift圖像處理之優(yōu)化照片

 更新時間:2015年11月10日 11:23:59   作者:yuhang  
Core Image能通過分析圖片的各個屬性,人臉的區(qū)域等進行自動優(yōu)化圖片。我們只需要調(diào)用autoAdjustmentFiltersWithOptions這個API方法獲取各個自動增強濾鏡來優(yōu)化圖片即可。不管是人物照片還是風(fēng)景照均可增強效果

Core Image能通過分析圖片的各個屬性,人臉的區(qū)域等進行自動優(yōu)化圖片。我們只需要調(diào)用autoAdjustmentFiltersWithOptions這個API方法獲取各個自動增強濾鏡來優(yōu)化圖片即可。不管是人物照片還是風(fēng)景照均可增強效果。

(以前另外還有個叫autoAdjustmentFilters的方法,現(xiàn)已廢除。)

1.具體使用的濾鏡如下:

(1)CIRedEyeCorrection:修復(fù)因相機的閃光燈導(dǎo)致的各種紅眼
(2)CIFaceBalance:調(diào)整膚色
(3)CIVibrance:在不影響膚色的情況下,改善圖像的飽和度
(4)CIToneCurve:改善圖像的對比度
(5)CIHighlightShadowAdjust:改善陰影細(xì)節(jié)

2.autoAdjustmentFiltersWithOptions方法參數(shù)說明(字典類型):

(1)CIDetectorImageOrientation提供圖像方向:使Core Image能更精確的定位到臉的位置,對CIRedEyeCorrection和CIFaceBalance濾鏡很有用。
(2)kCIImageAutoAdjustEnhance設(shè)為false :只需要消除紅眼,不要其他濾鏡
(3)kCIImageAutoAdjustRedEye設(shè)為false :消除紅眼不要,其他濾鏡都要

3.效果圖如下(右側(cè)為優(yōu)化后的):

4.代碼如下(所有濾鏡都使用):

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()
  }
  //優(yōu)化圖片
  @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
  }
}

研究并自己敲一敲或者做成直接用的類是不錯的選擇.下面的地址不是寫死的,加了拍照優(yōu)化的功能,代碼如下:(但是有一個BUG暫時無法解決,待解決了我再補充,大家自己用起來就知道在哪里了)

import UIKit
//從相冊選取或者拍照需要實現(xiàn)UIImagePickerControllerDelegate UINavigationControllerDelegate
class ViewController: UIViewController ,UIImagePickerControllerDelegate,UINavigationControllerDelegate{
  @IBOutlet weak var imageView: UIImageView!
  var chooseImage: UIImage = UIImage()
  //圖片原圖
//  lazy var originalImage: UIImage = UIImage(named: "jobZ.png")!
//  
//  lazy var context: CIContext = CIContext(options: nil)
  lazy var context: CIContext = {
    return CIContext(options: nil)
  }()
  override func viewDidLoad() {
//    self.imageView.image = UIImage(named: "jobZ.png")
  }
  //美化圖片
  @IBAction func autoAdjustImage(sender: UIButton) {
    var inputImage = CIImage(image: self.chooseImage)
    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 chooseImage(sender: UIButton) {
    if UIImagePickerController.isSourceTypeAvailable(.PhotoLibrary){
      //初始化圖片控制器
      let picker = UIImagePickerController()
      //設(shè)置代理
      picker.delegate = self
      //指定圖片控制器類型 source我這里寫的是用拍照,如果想用圖庫后面值改成UIImagePickerControllerSourceType.PhotoLibrary即可
      picker.sourceType = UIImagePickerControllerSourceType.Camera
      //如果有前置攝像頭則調(diào)用前置攝像頭
      if UIImagePickerController.isCameraDeviceAvailable(UIImagePickerControllerCameraDevice.Front){
        picker.cameraDevice = UIImagePickerControllerCameraDevice.Front
      }
      //彈出控制器,顯示界面
      self.presentViewController(picker, animated: true, completion: {
        () -> Void in
      })
    }else{
      print("讀取相冊錯誤")
    }
  }
  //還原圖片
  @IBAction func resetImage(sender: UIButton) {
    self.imageView.image = self.chooseImage
  }
  //代理
  //選擇圖片成功后代理
  func imagePickerController(picker: UIImagePickerController,
    didFinishPickingMediaWithInfo info: [String : AnyObject]) {
      //查看info對象
      print(info)
      //獲取選擇的原圖
      let image = info[UIImagePickerControllerOriginalImage] as! UIImage
      self.imageView.image = image
      self.chooseImage = image
      //圖片控制器退出
      picker.dismissViewControllerAnimated(true, completion: {
        () -> Void in
      })
  }
}

此段代碼運行效果如下:

相關(guān)文章

  • swift中正確安全聲明一個單例的方法實例

    swift中正確安全聲明一個單例的方法實例

    這篇文章主要給大家介紹了關(guān)于swift中如何正確安全聲明一個單例的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • swift?framework使用OC?代碼兩種方式示例

    swift?framework使用OC?代碼兩種方式示例

    這篇文章主要為大家介紹了swift?framework使用OC?代碼兩種方式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Swift3.0仿支付寶二維碼掃描效果

    Swift3.0仿支付寶二維碼掃描效果

    這篇文章主要為大家詳細(xì)介紹了Swift3.0仿支付寶二維碼掃描效果的相關(guān)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Swift算法之二叉樹實現(xiàn)的方法示例

    Swift算法之二叉樹實現(xiàn)的方法示例

    二叉樹是計算機科學(xué)中最基本也是最重要的樹型結(jié)構(gòu),最常見的二叉樹生成算法通常是使用遞歸或者其他描述類語言的方法來實現(xiàn)。本文主要介紹了Swift算法之二叉樹實現(xiàn)的方法,文中介紹的非常詳細(xì),對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • Swift學(xué)習(xí)教程之訪問控制詳解

    Swift學(xué)習(xí)教程之訪問控制詳解

    訪問控制可以限定你在源文件或模塊中訪問代碼的級別,也就是說可以控制哪些代碼你可以訪問,哪些代碼你不能訪問。下面這篇文章主要給大家介紹了關(guān)于Swift學(xué)習(xí)教程之訪問控制的相關(guān)資料,需要的朋友可以參考下。
    2017-08-08
  • Swift中switch語句區(qū)間和元組模式匹配

    Swift中switch語句區(qū)間和元組模式匹配

    這篇文章主要介紹了Swift中switch語句區(qū)間和元組模式匹配的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-12-12
  • Swift中使用正則表達(dá)式的一些方法

    Swift中使用正則表達(dá)式的一些方法

    這篇文章主要介紹了Swift中使用正則表達(dá)式的一些方法,Swift語言對正則表達(dá)式的支持也在不斷改進中,需要的朋友可以參考下
    2015-07-07
  • Swift與Objective C的簡單對比

    Swift與Objective C的簡單對比

    很多人想學(xué)習(xí)iOS開發(fā),但是不知道如何從Objective-C和Swift之間選擇。而網(wǎng)上的一些答案,大抵說的是,以后Swift終將取代Objective-C,但是目前來講還是Objective-C比較重要。那么究竟怎樣呢,今天我們就來探討下
    2016-12-12
  • Switch語句的技巧

    Switch語句的技巧

    switch語句對一個表達(dá)式求值,將結(jié)果與 case 子語句比較,如果匹配,則從 case 處的語句向下執(zhí)行,本文給大家介紹Switch語句的技巧,需要的朋友參考下吧
    2016-02-02
  • Swift實現(xiàn)倒計時5秒功能

    Swift實現(xiàn)倒計時5秒功能

    這篇文章主要為大家詳細(xì)介紹了Swift實現(xiàn)倒計時5秒功能,在“登錄”和“注冊”頁面也有相似功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評論