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. [C++] Variable storage space

    Variable storage space

  2. cs231n(一)

    1.Nearest Neighbor Classifier 计算未分类数据(图片)与已标记类别的训练数据(training set)的距离(L1,L2等距离),然后返回与训练数据(图片)最小距离的图片 ...

  3. IntelliJ IDEA 注册码及相关资源

    原文地址 http://idea.lanyus.com/ *.lanyus.com下的全部授权服务器已遭JetBrains封杀,请使用http://idea.qinxi1992.cn 或者搭建自己的I ...

  4. 实践作业3:白盒测试----学习Junit框架DAY10.

    JUnit - 测试框架 首先应该了解什么是 Junit 测试框架? JUnit 是一个回归测试框架,被开发者用于实施对应用程序的单元测试,加快程序编制速度,同时提高编码的质量.JUnit 测试框架能 ...

  5. transition与animation的区别

    transition需要事件触发,animation可以直接自动触发,而且功能上更为强大,包括可以设置不同时间段的动画规则,还有状态的控制,事件等等.

  6. Go 语言并发笔记

    前言: 本文是学习<<go语言程序设计>> -- 清华大学出版社(王鹏 编著) 的2014年1月第一版 做的一些笔记 , 如有侵权, 请告知笔者, 将在24小时内删除, 转载请 ...

  7. 关于Manifest merger failed : uses-sdk:minSdkVersion 8 cannot be smaller than version 16 declared in lib

    日志有些长,标题显示不完,截图如下: 有图可以知道,是因为在引入的libary里面的build.gradle文件里面的minSdkVersion不一致导致这个问题出现的.修改一致即可.这个问题是在co ...

  8. centos环境下如何导出数据库

    MySQL数据库的导入导出可以用数据库备份工具mysqldump mysqldump工具是mysql自带的一个非常方便的一款小工具,存在mysql安装目录的/usr/local/mysql/bin ( ...

  9. TextView 垂直居中

     需要区分的是这里的top,bottom,ascent,descent,baseline是指字内容的属性,通过getPaint().getFontMetricsInt()来获取得到.和字体内容的外部容 ...

  10. Eclipse 调试 NodeJS

    插件地址   http://chromedevtools.googlecode.com/svn/update/dev/ 博客地址 http://www.cnblogs.com/QLeelulu/arc ...