iOS-美颜相机 by GPUImage

news/2024/10/31 5:36:53/

之前网上有个段子说:日本女人靠化妆,韩国女人靠整容,中国女人靠美颜

足以证明相机美颜功能在中国地位是多么高,关于美颜相机的 App 在中国是那么的火

其实美颜相机的实现原理很简单,就是给采集到的图像通过添加滤镜进行渲染


核心代码

创建相机

/**sessionPreset:swift 3.0 AVCaptureSessionPreset640x480swift 4.0 AVCaptureSession.Preset.vga640x480.rawValue全屏 AVCaptureSession.Preset.hd1280x720cameraPosition:设置为前置摄像头
*/
let stillCamera: GPUImageStillCamera = GPUImageStillCamera(sessionPreset: AVCaptureSession.Preset.vga640x480.rawValue, cameraPosition: .front)
// 设置为竖屏
stillCamera.outputImageOrientation =  .portrait

创建预览视图

let showView = GPUImageView(frame: UIScreen.main.bounds)
view.insertSubview(showView, at: 0)

创建滤镜组

// 初始化滤镜组
let filterGroup = GPUImageFilterGroup()// 初始化滤镜
fileprivate let exposureFilter    = GPUImageExposureFilter()   // 曝光
fileprivate let bilateralFilter   = GPUImageBilateralFilter()  // 磨皮
fileprivate let brightnessFilter  = GPUImageBrightnessFilter() // 美白
fileprivate let satureationFilter = GPUImageSaturationFilter() // 饱和// 关联滤镜
bilateralFilter.addTarget(brightnessFilter)
brightnessFilter.addTarget(exposureFilter)
exposureFilter.addTarget(satureationFilter)// 设置滤镜组起点和终点 filter
filterGroup.initialFilters = [bilateralFilter]
filterGroup.terminalFilter = satureationFilter

将滤镜组、预览视图、相机相关联

// 将滤镜组、预览视图、相机相关联
stillCamera?.addTarget(filterGroup)
filterGroup?.addTarget(showView)

启动相机

stillCamera?.startCapture()

旋转摄像头

func rotateCameraAction() {stillCamera?.rotateCamera()
}

通过调整四个子滤镜的值,获取最佳美颜效果

// 修改磨皮值
// A normalization factor for the distance between central color and sample color, with a default of 8.0.
// 默认值 8.0
bilateralFilter.distanceNormalizationFactor = CGFloat(sender.value) * 8
// texelSpacingMultiplier: A multiplier for the spacing between texel reads, ranging from 0.0 on up, with a default of 4.0
// 默认值 4.0
bilateralFilter.texelSpacingMultiplier = 4.0// 修改曝光度
// Exposure ranges from -10.0 to 10.0, with 0.0 as the normal level
// [-10.0, 10.0], 0为默认值
exposureFilter.exposure = CGFloat(sender.value) * 20 - 10// 修改亮度
// Brightness ranges from -1.0 to 1.0, with 0.0 as the normal level
// [-1.0, 1.0], 0为默认值
brightnessFilter.brightness = CGFloat(sender.value) * 2 - 1// 修改饱和度
// Saturation ranges from 0.0 (fully desaturated) to 2.0 (max saturation), with 1.0 as the normal level
// [0.0, 2.0], 1.0为默认值
satureationFilter.saturation =  CGFloat(sender.value) * 2

拍摄图片

func captureAction() {// 拍摄图片stillCamera?.capturePhotoAsImageProcessedUp(toFilter: filterGroup, withCompletionHandler: { (image, error) inif let image = image {// 将图片存入相册UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)}})
}

http://www.ppmy.cn/news/437083.html

相关文章

android 美颜相机开发,Android OpenGL ES从入门到进阶(一)—— 五分钟开发一款美颜相机...

源码链接:https://github.com/smzhldr/AGLFramework 一、前言 商店里有数十款的美颜相机类产品,以及像抖音,唱吧之类带有视频的软件,功能很强大,其实现原理基本上都是以OpenGL ES为核心的特效处理,笔者码了一个很轻量级的Android OpenGL ES及Camera开发框架,意在使用的时…

android自定义美颜相机,效果最自然 美颜相机for Android版更新

【IT168 资讯】备受爱自拍女生追捧的手机自拍神器“美颜相机”安卓版在八月初迎来了又一次重大改版,跟iPhone最新版一样,美颜相机安卓版1.3也在“自拍”功能中新增加了“美颜特效”模式,此外自拍瞬间的祛黑眼圈功能及祛斑功能再度升级&#x…

鸿蒙系统视频美颜,BeautyCam美颜相机

BeautyCam美颜相机app是一款超美的自拍相机软件。BeautyCam美颜相机app提供细腻质感滤镜和高级美颜功能,让你时刻保持好气色! 软件介绍 BeautyCam美颜相机app是一款火爆全球的自拍神器。BeautyCam美颜相机app具有强大的功能,一键拍照美颜全搞…

java美颜相机

通过java来实现美颜相机需要以下步骤: 1.设置窗体(画图版面、功能版面) 2.添加动作监听器 3.对监听器的功能设置 一、设置窗体 首先我们应该设置美颜相机的窗体界面(用边框布局BorderLayout) 我们可以直接通过创建…

美颜相机基本算法总结

一、主要内容概述 本文主要是对美颜相关的一些内容的学习做一个总结,一个基本的美颜相机大概包含了美颜和美型两个方面,美颜主要是磨皮美白等效果,美型则是对眼睛、鼻子、脸型等做一些微调;大多美型相机还会提供各式各样的滤镜、…

【项目:实现美颜相机——java】

我们可以用java代码实现美颜相机的功能。 类似于之前的图片处理效果: 【java用监听器实现选择处理图片的效果】_ZERO_HOPE的博客-CSDN博客 摄像头抓取的图片一帧一帧地绘制在界面上,得到视频效果。 我们对图片进行处理,就能得到滤镜效果的…

为什么说网络安全是IT行业最后的红利?

前言 “没有网络安全就没有国家安全”。当前,网络安全已被提升到国家战略的高度,成为影响国家安全、社会稳定至关重要的因素之一。 网络安全行业特点 1、就业薪资非常高,涨薪快 2021年猎聘网发布网络安全行业就业薪资行业最高人均33.77万…

IOS 笔记大全 (UI控件到网络协议)

1 MVC模式:(model+view+controller):是一种帮你把代码功能和显示划分出来的设计模式; 2 model:较为底层的数据引擎,负责管理实体中所继承的数据; 3 view:和…