GPUImage实现过程
GPUImage就是一个函数的类库,用于对图片实现滤镜的效果。
下面是实现一个最简单的GPUImage的程序和讲解:
首先新建一个项目,导入GPUImage类库(导入过程在我的另一个博客里面有写)。
然后在ViewController的头文件里面添加GPUImage.h,然后在实现文件里面开始写函数。
实现的基本流程和代码如下:
//设置图片
UIImage * inputImage = [UIImage imageNamed:@"sample1.jpg"];
//获取视图
GPUImageView * imageView = (GPUImageView *)self.view;
//把图片加载到GPU
GPUImagePicture * sourcePicture;
sourcePicture = [[GPUImagePicture alloc] initWithImage:inputImage smoothlyScaleOutput:YES];
//初始化滤镜
GPUImageTiltShiftFilter * tiltShiftFilter = [[GPUImageTiltShiftFilteralloc] init];
//三个步骤显示图片
[sourcePicture addTarget:tiltShiftFilter];
[tiltShiftFilter addTarget:imageView];
[sourcePicture processImage];
个人的理解:
第一步是将图片通过UIImage导入程序
然后获取当前的视图并转化成GPU视图(这一步其实这样写不好,GPUImageVIew其实功能跟UIImageView是一样的,就是一个显示图片的控件,所以这一步是把GPUImageView添加到主视图上,用AddSubView方法更好一点)
然后把UIImage转化成GPU图片
初始化一个滤镜
把GPU图片委托给滤镜,滤镜委托给GPU视图,然后运行GPU图片的时候会连带委托一起运行。
这只是一个最最简单基础的滤镜,当然后面如果还有更加复杂的滤镜操作方式我会继续更新。
GPUImage实现过程的更多相关文章
- c++ primer plus 第6版 部分二 5- 8章
---恢复内容开始--- c++ primer plus 第6版 部分二 5- 章 第五章 计算机除了存储外 还可以对数据进行分析.合并.重组.抽取.修改.推断.合成.以及其他操作 1.for ...
- GPUImage 自定义滤镜
GPUImage 自定义滤镜 GPUImage 是一个基于 GPU 图像和视频处理的开源 iOS 框架.由于使用 GPU 来处理图像和视频,所以速度非常快,它的作者 BradLarson 称在 iPh ...
- GPUImage源码解读之GLProgram
简述 GLProgram是GPUImage中代表openGL ES 中的program,具有glprogram功能.其实是作者对OpenGL ES program的面向对象封装 初始化 - (id)i ...
- GPUImage源码解读之GPUImageContext
GPUImageContext类,提供OpenGL ES基本上下文,GPUImage相关处理线程,GLProgram缓存.帧缓存.由于是上下文对象,因此该模块提供的更多是存取.设置相关的方法. 属性列 ...
- GPUImage源码解读之GPUImageFramebufferCache
简介 由于GPUImage添加滤镜可以形成一个FilterChain,因此,在渲染的过程中,可能会需要很多个FrameBuffer,但是正如上文所说,每生成一个FrameBuffer都需要占用一定的内 ...
- ios美颜 调研 GPUImage GPUImageBeautifyFilter BeautifyFaceDemo
最近需要给直播项目中添加美颜的功能,调研了很多SDK和开源代码(视决,涂图,七牛,金山云,videoCore等),综合成本/效果/对项目侵入性,最后决定使用一款基于GPUImage实现的 Beauti ...
- GPUImage ==> 一个基于GPU图像和视频处理的开源iOS框架
Logo 项目介绍: GPUImage是Brad Larson在github托管的开源项目. GPUImage是一个基于GPU图像和视频处理的开源iOS框架,提供各种各样的图像处理滤镜,并且支持照相机 ...
- Vulkan移植GpuImage(二)Harris角点检测与导向滤波
Harris角点检测 UI还是用的上次扣像的,只有前后置可以用,别的没有效果,只看实现就好. 相应源码 在实现之前,我先重新整理编译glsl的生成工具,如Harris角点检测中间计算过程需要针对rgb ...
- Vulkan移植GpuImage(三)从A到C的滤镜
前面移植了几个比较复杂的效果后,算是确认了复杂滤镜不会对框架造成比较大的改动,开始从头移植,现已把A到C的所有滤镜用vulkan的ComputeShader实现了,讲一些其中实现的过程. Averag ...
随机推荐
- ca-bundle.crt to java truststore(e.g. trustStore.jks)
1. download java keyutilhttps://java-keyutil.googlecode.com/files/keyutil-0.4.0.jar 2. run the follo ...
- 类库探源——System.Delegate
一.MSDN 描述 Delegate 类:表示委托,委托是一种数据结构,它引用静态方法或引用类实例及该类的实例方法.(是不是感觉很像C语言中的函数指针 :) ) 命名空间: System 程序集: ...
- list集合练习一
package com.java.c.domain; public class Person { private String name; private int age; public Person ...
- winpcap 发送接收速率
总体情况: 在不修改winpcap源码的情况下,发包.收包最大速率3包/ms. 收包几个api的速率: 1. m_fp = pcap_open_live(adapter->name, 65536 ...
- 总结javascript继承的两种方式的N中写法
最近翻看博客园,总结了一下javascript的继承方式:prototype和copy继承方式. 一.prototype方式 当一个函数被创建时,Function构造函数产生的函数会隐式的被赋予一个p ...
- jquery ajax 后台响应成功,返回正确json但不执行success方法,执行error的问题
昨天被这问题卡了好几个小时.查看http状态码:是200.而且返回了预想的json字符串.但执行的是error方法,不执行success方法.在网上查了一下,才发现是后台页面返回的json字符串格式不 ...
- 创建对象的两种方法: new 和 面向对象(对象字面量)及对象属性访问方法
创建对象的两种方法: new 和 面向对象(对象字面量)用 new 时:var o = new Object();o.name = "lin3615";alert(o.name); ...
- [转] 小tips: 使用 等空格实现最小成本中文对齐 ---张鑫旭
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=4562 一.重见天日第 ...
- jquery 效果
效果1.基本效果 1.1 show([speed,[easing],[fn]]) 如果元素本身是可见的,则不对其作任何改变.如果元素是隐藏的,则使其可见. $("p&qu ...
- jQuery开发技术笔记
HTML DOM 加载步骤 1. 解析 HTML 结构 2.加载外部脚本和样式表文件 3.解析并执行脚本代码 4.构造 HTML DOM 模型 5.加载图片等外部 ...