下面我們來看一篇關於ios開發之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,效果圖如下(右側為優化後的):
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()
}
//優化圖片
@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
}
}