GPUImage处理图片(滤镜)
GPUImage 是基于 GPU 处理图像的一个开源库, 提供了各种图像处理滤镜,例如调 亮度/饱和度/曝光度/白平衡/锐化等滤镜.
并且支持照相机/摄像机 的实时滤镜.
GPUImage采用链式方式来处理画面,通过addTarget:方法为链条添加每个环节的对象,处理完一个target,就会把上一个环节处理好的图像数据传递下一个target去处理,称为GPUImage处理链.
https://github.com/BradLarson/GPUImage
图片滤镜
//调整图像的对比度
- (void)changeContrast{
//对比度
// GPUImageContrastFilter *filter = [[GPUImageContrastFilter alloc]init];
// filter.contrast = self.slider.value;
//饱和度
// GPUImageSaturationFilter *filter = [[GPUImageSaturationFilter alloc]init];
// filter.saturation = self.slider.value;
//曝光度
// GPUImageExposureFilter *filter = [[GPUImageExposureFilter alloc] init];
// filter.exposure = self.slider.value;
//色温(白平衡)
GPUImageWhiteBalanceFilter *filter = [[GPUImageWhiteBalanceFilter alloc] init];
filter.temperature = self.slider.value;
filter.tint = 0.0; //设置要渲染的区域
[filter forceProcessingAtSize:_image.size]; //获取 GPU 图片
GPUImagePicture *pic = [[GPUImagePicture alloc]initWithImage:_image];
//添加滤镜
[pic addTarget:filter];
//开始渲染
[pic processImage];
//(需要调用一下? why?)
[filter useNextFrameForImageCapture];
//获取渲染后的图片
UIImage *newImage = [filter imageFromCurrentFramebuffer]; self.imageView.image = newImage; }
实时相机滤镜
//创建相机(注意:当前vc需持有camera, 否则会提前释放)
camera = [[GPUImageVideoCamera alloc]initWithSessionPreset:AVCaptureSessionPresetHigh cameraPosition:AVCaptureDevicePositionFront];
camera.outputImageOrientation = UIInterfaceOrientationPortrait; //创建最终预览视图 view
GPUImageView *cameraView = [[GPUImageView alloc]initWithFrame:self.view.frame];
[self.view insertSubview:cameraView atIndex:]; //创建滤镜组合: 磨皮,美白
GPUImageFilterGroup *groupFilter = [[GPUImageFilterGroup alloc]init];
//磨皮滤镜
GPUImageBilateralFilter *bilateralFilter = [[GPUImageBilateralFilter alloc]init];
[groupFilter addTarget:bilateralFilter];
//美白滤镜
GPUImageBrightnessFilter *brightFilter = [[GPUImageBrightnessFilter alloc]init];
[groupFilter addTarget:brightFilter];
//设置滤镜组链
[bilateralFilter addTarget:brightFilter];
[groupFilter setInitialFilters:@[bilateralFilter]];
groupFilter.terminalFilter = brightFilter;
//设置 GPUImage 处理链,从数据源->滤镜->最终页面效果
[camera addTarget:groupFilter];
[groupFilter addTarget:cameraView]; //相机开始捕获
[camera startCameraCapture];
参考:
//滤镜效果
http://blog.csdn.net/gaojq_ios/article/details/46926559
//实时滤镜(相机)
https://www.jianshu.com/p/b1d3ef7fdf7a
https://www.jianshu.com/p/2ce9b63ecfef
http://blog.csdn.net/xoxo_x/article/details/58357978
博客:(总结)
http://blog.csdn.net/xoxo_x/article/details/52695032
GPUImage 原理
http://blog.csdn.net/qq_29846663/article/details/53707482
GPUImage所有滤镜介绍
http://www.360doc.com/content/15/0907/10/19175681_497418716.shtml
GPUImage处理图片(滤镜)的更多相关文章
- GPUImage 自定义滤镜
GPUImage 自定义滤镜 GPUImage 是一个基于 GPU 图像和视频处理的开源 iOS 框架.由于使用 GPU 来处理图像和视频,所以速度非常快,它的作者 BradLarson 称在 iPh ...
- GPUimage实时滤镜的实现
GPUIMAGE中GPUImageStillCamera可以调用系统相机,并实现实时滤镜,但是我没有找到相机全屏的方法,望知道的说一下 GPUImageStillCamera继承自GPUImageVi ...
- 导入GPUImage,实时滤镜相机,GUPImage遇到的问题解决,_OBJC_METACLASS_$_GBGPUImageView in GBGPUImageView.o
导入方法转自:http://www.cnblogs.com/S2-huai/p/3881349.html.. (原文:http://www.cnblogs.com/YouXianMing/p/3709 ...
- GPUImage简单滤镜使用(二)
GPUImage中,提供了许多简单的的常用的滤镜.在上一篇文章讲了如何调节图像的亮度这片文章讲一下如何通过GPUImage调节图像的对比度,饱和度,曝光度,和白平衡(美图秀秀中的色温). 原图像 调整 ...
- GPUImage简单滤镜使用(一)
今天来学习一下一个简单滤镜使用的流程,通过调节亮度滤镜来了解.先将GPUImage库导入到项目中,引入头文件"GPUImage.h" 一.创建亮度滤镜对象 GPUImag ...
- GPUImage简单滤镜使用之色阶(三)
色阶是表示图像亮度强弱的指数标准,图像的色彩丰满度和精细度是由色阶决定的.在GPUImage中GPUImageLevelsFilter提供了此功能. GPUImageLevelsFilter定义了修改 ...
- iOS GPUImage 滤镜介绍
这里直接引用官方描述: The GPUImage framework is a BSD-licensed iOS library that lets you apply GPU-accelerated ...
- GPUImage ==> 一个基于GPU图像和视频处理的开源iOS框架
Logo 项目介绍: GPUImage是Brad Larson在github托管的开源项目. GPUImage是一个基于GPU图像和视频处理的开源iOS框架,提供各种各样的图像处理滤镜,并且支持照相机 ...
- iOS滤镜功能
一.iOS自带滤镜 1.CoreImage 使用苹果自带的CoreImage框架对图片进行处理,用CoreImage框架里的CIFilter对图片进行滤镜处理, 首先我们应该了解下CoreImage框 ...
随机推荐
- 26-三个水杯(bfs)
三个水杯 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子.三个水杯之间相互倒水,并且水杯没有 ...
- ProxyPattern(23种设计模式之一)
设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置原则 设计模式六大原则(4):接口隔离原则 设计模式六大原则(5):迪米特法则 设计模式六大 ...
- spring aop博客记录
1.spring aop和事务失效 解决办法: http://blog.csdn.net/z2007130205/article/details/41284381 http://blog.csdn.n ...
- 后台注册js代码的方法
Page.ClientScript.RegisterClientScriptBlock(JSUtil.CurrentPage.GetType(), Util.NewGuid(), @"< ...
- Qt资源整理ING
QCustomPlot:图表库,开源, 链接地址http://www.qcustomplot.com/index.php/download 一些Qt的开发库:http://qt-project.org ...
- Yii2在Form中处理短信验证码的Validator,耦合度最低的短信验证码验证方式
短信验证码在目前大多数web应用中都会有,本文介绍一个基于Yii2 Validator方式的验证码验证方式. 在其他文章中看到的方式大多比较难做到一次封装,多次重用. 使用此方式的好处自然不用多说,V ...
- ThinkPhp 生成静态页面
//开启静态缓存'HTML_CACHE_ON' => true, //开启缓存'HTML_CACHE_TIME' =>60, //开启缓存时间'HTML_FILE_SUFFIX' => ...
- perl读取excel
因为工作当中遇到要处理大数据的excel的玩意,最多的有几十万行.用perl的方式试试,看看效果如何. ppm install OLE::Storage_Lite #如果不安装这个,后面两个安装不了 ...
- 【图解HTTP】第一章 了解web及网络基础
[图解HTTP]了解Web及网络基础 Web页面是如何呈现的?根据Web浏览器地址栏中指定的URL,Web浏览器从Web服务器端获取文件资源(resource)等信息,从而显示出Web页面. 这种通过 ...
- 重叠io操作
第一章 一. 重叠模型的优点 1. 可以运行在支持Winsock2的所有Windows平台 ,而不像完成端口只是支持NT系统. 2. 比起阻塞.select.WSAAsyncSelect以及WSAEv ...