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处理图片(滤镜)的更多相关文章

  1. GPUImage 自定义滤镜

    GPUImage 自定义滤镜 GPUImage 是一个基于 GPU 图像和视频处理的开源 iOS 框架.由于使用 GPU 来处理图像和视频,所以速度非常快,它的作者 BradLarson 称在 iPh ...

  2. GPUimage实时滤镜的实现

    GPUIMAGE中GPUImageStillCamera可以调用系统相机,并实现实时滤镜,但是我没有找到相机全屏的方法,望知道的说一下 GPUImageStillCamera继承自GPUImageVi ...

  3. 导入GPUImage,实时滤镜相机,GUPImage遇到的问题解决,_OBJC_METACLASS_$_GBGPUImageView in GBGPUImageView.o

    导入方法转自:http://www.cnblogs.com/S2-huai/p/3881349.html.. (原文:http://www.cnblogs.com/YouXianMing/p/3709 ...

  4. GPUImage简单滤镜使用(二)

    GPUImage中,提供了许多简单的的常用的滤镜.在上一篇文章讲了如何调节图像的亮度这片文章讲一下如何通过GPUImage调节图像的对比度,饱和度,曝光度,和白平衡(美图秀秀中的色温). 原图像 调整 ...

  5. GPUImage简单滤镜使用(一)

    今天来学习一下一个简单滤镜使用的流程,通过调节亮度滤镜来了解.先将GPUImage库导入到项目中,引入头文件"GPUImage.h"   一.创建亮度滤镜对象    GPUImag ...

  6. GPUImage简单滤镜使用之色阶(三)

    色阶是表示图像亮度强弱的指数标准,图像的色彩丰满度和精细度是由色阶决定的.在GPUImage中GPUImageLevelsFilter提供了此功能. GPUImageLevelsFilter定义了修改 ...

  7. iOS GPUImage 滤镜介绍

    这里直接引用官方描述: The GPUImage framework is a BSD-licensed iOS library that lets you apply GPU-accelerated ...

  8. GPUImage ==> 一个基于GPU图像和视频处理的开源iOS框架

    Logo 项目介绍: GPUImage是Brad Larson在github托管的开源项目. GPUImage是一个基于GPU图像和视频处理的开源iOS框架,提供各种各样的图像处理滤镜,并且支持照相机 ...

  9. iOS滤镜功能

    一.iOS自带滤镜 1.CoreImage 使用苹果自带的CoreImage框架对图片进行处理,用CoreImage框架里的CIFilter对图片进行滤镜处理, 首先我们应该了解下CoreImage框 ...

随机推荐

  1. 26-三个水杯(bfs)

    三个水杯 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子.三个水杯之间相互倒水,并且水杯没有 ...

  2. ProxyPattern(23种设计模式之一)

    设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置原则 设计模式六大原则(4):接口隔离原则 设计模式六大原则(5):迪米特法则 设计模式六大 ...

  3. spring aop博客记录

    1.spring aop和事务失效 解决办法: http://blog.csdn.net/z2007130205/article/details/41284381 http://blog.csdn.n ...

  4. 后台注册js代码的方法

    Page.ClientScript.RegisterClientScriptBlock(JSUtil.CurrentPage.GetType(), Util.NewGuid(), @"< ...

  5. Qt资源整理ING

    QCustomPlot:图表库,开源, 链接地址http://www.qcustomplot.com/index.php/download 一些Qt的开发库:http://qt-project.org ...

  6. Yii2在Form中处理短信验证码的Validator,耦合度最低的短信验证码验证方式

    短信验证码在目前大多数web应用中都会有,本文介绍一个基于Yii2 Validator方式的验证码验证方式. 在其他文章中看到的方式大多比较难做到一次封装,多次重用. 使用此方式的好处自然不用多说,V ...

  7. ThinkPhp 生成静态页面

    //开启静态缓存'HTML_CACHE_ON' => true, //开启缓存'HTML_CACHE_TIME' =>60, //开启缓存时间'HTML_FILE_SUFFIX' => ...

  8. perl读取excel

    因为工作当中遇到要处理大数据的excel的玩意,最多的有几十万行.用perl的方式试试,看看效果如何. ppm install OLE::Storage_Lite #如果不安装这个,后面两个安装不了 ...

  9. 【图解HTTP】第一章 了解web及网络基础

    [图解HTTP]了解Web及网络基础 Web页面是如何呈现的?根据Web浏览器地址栏中指定的URL,Web浏览器从Web服务器端获取文件资源(resource)等信息,从而显示出Web页面. 这种通过 ...

  10. 重叠io操作

    第一章 一. 重叠模型的优点 1. 可以运行在支持Winsock2的所有Windows平台 ,而不像完成端口只是支持NT系统. 2. 比起阻塞.select.WSAAsyncSelect以及WSAEv ...