GPUImage使用之stillCamera多滤镜
2019独角兽企业重金招聘Python工程师标准>>>
捕获照片并且对照片进行滤镜,我们可以使用GPUStillCamera。我在工程中写了一个“截图”功能,保存照片到本地相册,iOS10以后某些权限我们需要自行添加到info.plist中去:相机的访问,相册的访问等。没有添加的话在ios10上运行是会报错的。
GPUImage本身就带了很多滤镜,我从中选了两个颜色处理类的滤镜,颜色反转跟褐色。保存照片也是滤镜处理过的照片。
//创建摄像头视图
GPUImageView *filterView = [[GPUImageView alloc]initWithFrame:self.view.bounds];
//显示模式充满整个边框
filterView.fillMode = kGPUImageFillModePreserveAspectRatioAndFill;
[self.view addSubview:filterView];
stillCamera = [[GPUImageStillCamera alloc]initWithSessionPreset:AVCaptureSessionPresetPhoto cameraPosition:AVCaptureDevicePositionBack];
//输出图像旋转方式
stillCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
filter = [[GPUImageSepiaFilter alloc]init];
GPUImageColorInvertFilter *filter2 = [[GPUImageColorInvertFilter alloc]init];
GPUImageFilterGroup *groupFilter = [[GPUImageFilterGroup alloc]init];
[groupFilter addFilter:filter2];
[groupFilter addFilter:filter];
[filter2 addTarget:filter];
lastFilter = filter;//定义了一个变量来保存filter-chain上的最后一个filter,后面保存图片时调用的方法里要用到。
groupFilter.initialFilters = @[filter2];
groupFilter.terminalFilter = filter;
[stillCamera addTarget:groupFilter];
[groupFilter addTarget:filterView];
[stillCamera startCameraCapture];
因为是多滤镜,所以我用了组合滤镜。关于组合滤镜的使用我在这里简要的说明一下它的使用方法(注意,添加滤镜的顺序不同,效果也不同):
- filterGroup(addFilter)添加每个滤镜
- 按添加顺序前一个filter添加后一个filter
- filterGroup.initialFilters=@[你添加的第一个filter]
- filterGroup.terminalFilter=最后一个你添加的filter
[stillCamera capturePhotoAsImageProcessedUpToFilter:lastFilter withCompletionHandler:^(UIImage *processedImage, NSError *error) {
/*保存图片到本地相册方法一:(要知道图片保存是否成功得去另一个方法中查看
UIImageWriteToSavedPhotosAlbum(processedImage,self, @selector(image:didFinishSavingWithError:contextInfo:), (__bridge void*)self);
*/
//方法二:
[[PHPhotoLibrary sharedPhotoLibrary]performChanges:^{
//写入图片到相册,拿到的图片是filter处理后的
[PHAssetChangeRequest creationRequestForAssetFromImage:processedImage];
} completionHandler:^(BOOL success, NSError * _Nullable error) {
NSLog(@"success = %d,error = %@",success,error);
}];
}];
保存图片我使用了<Photos/Photos.h>,记得import。
滤镜的选择对图片的生成也是有影响的,我刚开始选的是褐色跟图片处理滤镜中的锐化,两个结合起来使用,镜头里倒是两种效果都存在,但是保存下来的照片确一直是褐色的,没有做锐化处理,我一直没弄明白,如果有人知道,不妨在下方评论告知我。我猜想不是同一类的滤镜如果做组合滤镜处理最后照片要么没滤镜要么只是其中某个滤镜处理了。
下面是我运行后保存的滤镜照片,以及原图。
原图
反转
反转+褐色
转载于:https://my.oschina.net/NycoWang/blog/856548
GPUImage使用之stillCamera多滤镜相关推荐
- Android图像滤镜框架GPUImage从配置到应用
转载地址:http://blog.csdn.net/it_zjyang/article/details/52268918 GPUImage简介 GPUImage 是iOS下一个开源的基于GPU的图像处 ...
- 【Android】图像滤镜框架GPUImage从配置到应用
GPUImage简介 GPUImage 是iOS下一个开源的基于GPU的图像处理库,提供各种各样的图像处理滤镜,并且支持照相机和摄像机的实时滤镜.GPUImage for Android是它在Andr ...
- 图像滤镜(GPUImage/GPU加速)、美化/图像处理技术 拼接及Skia- Android
图像滤镜处理的两种方式:RGB点乘运算:GPU的矩阵运算(效率更高). > 图像像素处理 getPixel getPixels setPixel setPixels Android Bitmap ...
- 数字图像处理、拼接,图像静态滤镜(GPUImage/GPU加速) - Android
图像滤镜处理的两种方式:RGB点乘运算:GPU的矩阵运算(效率更高).图片处理中的计算:RGBA~利用自带的方法修改色调,饱和度,亮度来修改图片:矩阵~利用矩阵计算得到新的矩阵修改图片. 几个图像像素 ...
- iOS上用GPUImage给视频加滤镜
最近在做一个需要给已有视频加滤镜的app,不是实时滤镜,而是给已经存在的视频加滤镜. 虽然网上有很多关于GPUImage的博客,但大多都是给图片加上滤镜或者是直接在摄像头上加上的实时滤镜,找了很久之后 ...
- iOS-图片处理 by GPUImage 滤镜
GPUImage 是一个开源的基于GPU的图片或视频的处理框架 本身基于 OpenGL ES 的封装,主要用于 iOS 图像处理 其本身内置了多达120多种常见的滤镜效果 实现原理: 1.获取 UII ...
- iOS---GPUImage研究:内置滤镜解析
iOS GPUImage研究:内置滤镜解析. 颜色调整 GPUImageBrightnessFilter:调整图像的亮度 亮度:调整亮度(-1.0 - 1.0,默认为0.0) GPUImageExpo ...
- Android使用GPUImage实现滤镜效果精炼详解(一)
一.前期基础知识详解 "滤镜通常用于相机镜头作为调色.添加效果之用.如UV镜.偏振镜.星光镜.各种色彩滤光片.滤镜也是绘图软件中用于制造特殊效果的工具统称,以Photoshop为例,它拥有风 ...
- ios美颜 调研 GPUImage GPUImageBeautifyFilter BeautifyFaceDemo[转]
转自 http://www.voidcn.com/article/p-dqzdlcah-bqb.html 最近需要给直播项目中添加美颜的功能,调研了很多SDK和开源代码(视决,涂图,七牛,金山云,vi ...
最新文章
- Mysql和Hadoop+Hive有什么关系?
- MySQL配置文件my.cnf中文版
- C#使用post提交http请求
- PAT (Basic Level) 1034 有理数四则运算(模拟)
- 记录程序人生2020.8.11
- flowable连线名称不显示bug修复说明
- 蔡俊锋 web API 开发规范
- [转载] python中随机数生成函数_python中seed随机函数如何生成随机数?
- 【长文详解】从Transformer到BERT模型
- SilverLight学习之基本图形
- 51单片机的定时器TMOD的小记
- 【JAVA】家庭记账系统
- 计算机专业y9000x,LEGION Y9000X笔记本U盘一键重装Win10专业版的教程
- 前端开发最基本的3个语言
- ROS学习笔记之——robot_localization包
- 上市公司融资流程有哪些
- 基于Faster-RCNN的目标检测(TF版) 步骤与问题解决办法
- 凉凉夜色为你思念成河
- 半自动微信消息定时发送
- 2021-2027全球与中国气溶胶采样器市场现状及未来发展趋势
热门文章
- 一文读懂Netty的核心构成块
- CString,string,char*,比较
- RT-Thread源码学习第六篇,线程调度器(1)
- 工业级大数据接入MQ消息发送异常性及最终一致性解决方案-DW商业环境实战
- HTML 5.2 有哪些新内容?
- python3.6 - threading 多线程编程基础(1)
- (转)[Unity3D]UI方案及制作细节(NGUI/EZGUI/原生UI系统) 内附unused-assets清除实例
- MOQL--操作数(Operand) (一)
- 【回文串4 DFS】LeetCode 131. Palindrome Partitioning
- 程序员面试金典——9.5字符串排列