需要用到的類是:GPUImageStillCamera
作用是:拍攝某一個(gè)畫面,并且保存圖片
初始化GPUImageStillCamera需要用到sessionPreset參數(shù)設(shè)置:

Paste_Image.png
代碼如下:
//
// ViewController.swift
// 美顏相機(jī)
//
// Created by liyang on 16/12/19.
// Copyright ? 2016年 liyang. All rights reserved.
//
import UIKit
import GPUImage
class ViewController: UIViewController {
@IBOutlet weak var bjImg: UIImageView!
fileprivate lazy var camera: GPUImageStillCamera = GPUImageStillCamera(sessionPreset: AVCaptureSessionPresetHigh, cameraPosition: .back)
// 初始化濾鏡
let bilateralFilter = GPUImageBilateralFilter() // 磨皮
let exposureFilter = GPUImageExposureFilter() // 曝光
let brightnessFilter = GPUImageBrightnessFilter() // 美白
let satureationFilter = GPUImageSaturationFilter() // 飽和
let fileterGroup = GPUImageFilterGroup()
override func viewDidLoad() {
super.viewDidLoad()
// 1、創(chuàng)建GPUImageStillCamera
camera.outputImageOrientation = .portrait
// 2、添加濾鏡(美白、曝光、磨皮、曝光)
let filerGroup = getGroupFileters()
camera.addTarget(filerGroup)
// 3、創(chuàng)建GPUImage,用于實(shí)時(shí)顯示畫面
let showView = GPUImageView(frame: view.bounds)
view.insertSubview(showView, at: 0)
filerGroup.addTarget(showView)
// 4、開始補(bǔ)抓
camera.startCapture()
}
// MARK:- 旋轉(zhuǎn)鏡頭
@IBAction func rotateCamera(_ sender: Any) {
camera.rotateCamera()
}
// 拍攝照片
@IBAction func takeCamera(_ sender: Any) {
camera.capturePhotoAsImageProcessedUp(toFilter: fileterGroup, withCompletionHandler: { (image, error) in
UIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil)
self.bjImg.image = image
// 停止采集
// self.camera.stopCapture()
})
}
fileprivate func getGroupFileters() -> GPUImageFilterGroup {
// 2、創(chuàng)建濾鏡(設(shè)置濾鏡的引用關(guān)系)
bilateralFilter.addTarget(brightnessFilter)
brightnessFilter.addTarget(exposureFilter)
exposureFilter.addTarget(satureationFilter)
// 3、設(shè)置濾鏡組鏈的起點(diǎn)&&終點(diǎn)
fileterGroup.initialFilters = [bilateralFilter]
fileterGroup.terminalFilter = satureationFilter
return fileterGroup
}
}