最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

2.autoAdjustmentFiltersWithOptions方法參數(shù)說(shuō)明(字典類(lèi)型):

(1)CIDetectorImageOrientation提供圖像方向:使Core Image能更精確的定位到臉的位置,對(duì)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
  }
}

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

import UIKit
//從相冊(cè)選取或者拍照需要實(shí)現(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
      //指定圖片控制器類(lèi)型 source我這里寫(xiě)的是用拍照,如果想用圖庫(kù)后面值改成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("讀取相冊(cè)錯(cuò)誤")
    }
  }
  //還原圖片
  @IBAction func resetImage(sender: UIButton) {
    self.imageView.image = self.chooseImage
  }
  //代理
  //選擇圖片成功后代理
  func imagePickerController(picker: UIImagePickerController,
    didFinishPickingMediaWithInfo info: [String : AnyObject]) {
      //查看info對(duì)象
      print(info)
      //獲取選擇的原圖
      let image = info[UIImagePickerControllerOriginalImage] as! UIImage
      self.imageView.image = image
      self.chooseImage = image
      //圖片控制器退出
      picker.dismissViewControllerAnimated(true, completion: {
        () -> Void in
      })
  }
}

此段代碼運(yùn)行效果如下:

相關(guān)文章

  • Swift縮放并填充圖片功能的實(shí)現(xiàn)

    Swift縮放并填充圖片功能的實(shí)現(xiàn)

    最近有一個(gè)需求,就是將圖片先等比例縮放到指定大小,然后將空余出來(lái)空間填充為黑色,返回指定大小的圖片。本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-11-11
  • Swift中的限定擴(kuò)展詳析

    Swift中的限定擴(kuò)展詳析

    擴(kuò)展就是向一個(gè)已有的類(lèi)、結(jié)構(gòu)體或枚舉類(lèi)型添加新功能。下面這篇文章主要給大家介紹了關(guān)于Swift中限定擴(kuò)展的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2018-03-03
  • Swift中重寫(xiě)和重載的使用與對(duì)比總結(jié)

    Swift中重寫(xiě)和重載的使用與對(duì)比總結(jié)

    這篇文章主要給大家介紹了關(guān)于Swift中重寫(xiě)和重載的使用方法,以及重寫(xiě)和重載的對(duì)比分析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • Swift?指針底層探索分析

    Swift?指針底層探索分析

    這篇文章主要為大家介紹了Swift?指針底層探索分析,主要包括指針的基本使用,以及指針的內(nèi)存綁定進(jìn)行詳細(xì)分析,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Swift中閉包實(shí)戰(zhàn)案例詳解

    Swift中閉包實(shí)戰(zhàn)案例詳解

    接觸過(guò)Swift的小伙伴對(duì)“閉包”應(yīng)該不陌生,相當(dāng)于OC中的Block,是Swift語(yǔ)法中比較難理解的一塊。下面這篇文章主要介紹了關(guān)于Swift中閉包實(shí)戰(zhàn)的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-03-03
  • 深入解析Swift中switch語(yǔ)句對(duì)case的數(shù)據(jù)類(lèi)型匹配的支持

    深入解析Swift中switch語(yǔ)句對(duì)case的數(shù)據(jù)類(lèi)型匹配的支持

    這篇文章主要介紹了Swift中switch語(yǔ)句對(duì)case的數(shù)據(jù)類(lèi)型匹配的支持,Swift中switch...case語(yǔ)句支持多種數(shù)據(jù)類(lèi)型的匹配判斷,十分強(qiáng)大,需要的朋友可以參考下
    2016-04-04
  • Swift教程之閉包詳解

    Swift教程之閉包詳解

    這篇文章主要介紹了Swift教程之閉包詳解,閉包可以在上下文的范圍內(nèi)捕獲、存儲(chǔ)任何被定義的常量和變量引用,因這些常量和變量的封閉性,而命名為“閉包(Closures)”,需要的朋友可以參考下
    2015-01-01
  • swift如何利用系統(tǒng)庫(kù)將漢字轉(zhuǎn)換為拼音詳解

    swift如何利用系統(tǒng)庫(kù)將漢字轉(zhuǎn)換為拼音詳解

    將漢字轉(zhuǎn)換為拼音更利于我們大家開(kāi)發(fā)搜索功能,所以這篇文章主要給大家介紹了關(guān)于swift如何利用系統(tǒng)庫(kù)將漢字轉(zhuǎn)換為拼音的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-10-10
  • Swift4.1轉(zhuǎn)場(chǎng)動(dòng)畫(huà)實(shí)現(xiàn)側(cè)滑抽屜效果

    Swift4.1轉(zhuǎn)場(chǎng)動(dòng)畫(huà)實(shí)現(xiàn)側(cè)滑抽屜效果

    這篇文章主要為大家詳細(xì)介紹了Swift4.1轉(zhuǎn)場(chǎng)動(dòng)畫(huà)實(shí)現(xiàn)側(cè)滑抽屜效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Swift中的常量和變量簡(jiǎn)單概述

    Swift中的常量和變量簡(jiǎn)單概述

    這篇文章主要介紹了Swift中的常量和變量簡(jiǎn)單概述的相關(guān)資料,非常具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05

最新評(píng)論

武定县| 浦东新区| 罗甸县| 焦作市| 顺义区| 濉溪县| 丰镇市| 肇庆市| 洛阳市| 旺苍县| 武强县| 澳门| 雅江县| 南郑县| 大邑县| 苍梧县| 青海省| 漯河市| 瑞金市| 西安市| 玉山县| 德安县| 苏州市| 从化市| 阿克| 青田县| 连江县| 高雄县| 阳泉市| 柘城县| 平武县| 新郑市| 扶风县| 谷城县| 石台县| 东安县| 综艺| 靖远县| 商城县| 武城县| 银川市|