GUIImage—2、美顏相機(jī)

需要用到的類是: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
    }
}

demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,023評(píng)論 25 709
  • 點(diǎn)擊查看原文 Web SDK 開發(fā)手冊(cè) SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 14,306評(píng)論 0 15
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,265評(píng)論 4 61
  • 月落烏啼霜滿天,江楓漁火對(duì)愁眠。姑蘇城外寒山寺,夜半鐘聲到客船。
    珠海紅葉原創(chuàng)閱讀 141評(píng)論 1 1
  • 我想我是喜歡你的, 不然怎么會(huì)幫素昧平生的你驅(qū)走搭訕男生; 我想我是喜歡你的, 不然怎么會(huì)在沒帶手機(jī)時(shí)記下你的電話...
    X_Rocky閱讀 272評(píng)論 0 0

友情鏈接更多精彩內(nèi)容