iOS用GPUImage为视频和图片增加滤镜

作者 : 开心源码 本文共1538个字,预计阅读时间需要4分钟 发布时间: 2022-05-11 共76人阅读

前言

这次的文章是我对滤镜效果一个学习,文章的文字比较少,花的主要功夫其实都在代码里面。demo的链接在下文已经给出了。

用场景

下面是我们常使用的用滤镜的场景

  1. 相机录像增加实时滤镜
  2. 相册内视频增加滤镜解决
  3. 相机拍照增加实时滤镜
  4. 给已有的图片/照片增加滤镜

滤镜实现方案

我简单的查了一下,可以用CoreImage,也可以用GPUImage来实现。
我这次主要说的是是用GPUImage来实现滤镜效果。

GPUImage

GPUImage这个框架有多强大我就不再赘述了,想必大家也理解到了,毕竟这是当前做滤镜此类功能最流行的框架。

我们从一个例子来入手吧,下面是给已有图片增加滤镜的例子。大家可以先看一眼这个图。

流程

这张图呢,是给已有的图片增加滤镜效果的一个大概流程图,我们在拿到一个原始的图片,先使用它来生成一个GPUImagePicture,而后创立我们需要的滤镜,而后使用滤镜来解决我们GPUImagePicture,最后,可以从这个filter类中取四处理后的图片。就这么简单

我简单的写了一下代码,大家请看

// 原图    UIImage *inputImage = [UIImage imageNamed:@"WID-small.jpg"];        // 生成GPUImagePicture    _sourcePicture = [[GPUImagePicture alloc] initWithImage:inputImage smoothlyScaleOutput:YES];        // 随意使用一个滤镜    _sepiaFilter = [[GPUImageTiltShiftFilter alloc] init];        // 假如要显示话,得创立一个GPUImageView来进行显示    GPUImageView * imageView = [[GPUImageView alloc] initWithFrame:self.view.bounds];    self.view = imageView;        //    [_sepiaFilter forceProcessingAtSize:imageView.sizeInPixels];     // 个人了解,这个add其实就是把_sourcePicture给_sepiaFilter来解决    [_sourcePicture addTarget:_sepiaFilter];    // 使用这个imageView来显示_sepiaFilter解决的效果    [_sepiaFilter addTarget:imageView];        // 开始!    [_sourcePicture processImage];

一个滤镜效果就这样简单的实现了。

其余的场景跟这种情况的原理也是相同的,整个增加滤镜的过程大家可以了解成分为三部分。

第一部分,就是输入的数据,不论是实时的数据,还是已经存在的数据,都算作输入。

第二部分就是滤镜,GPUImage这个框架给我们提供了大量的滤镜效果了,我们可以根据我们的需要选择用,假如所有的不满足,滤镜还可以自己设置。滤镜拿到我们的输入的原始数据进行解决。

第三部分就是输出,我们在做滤镜的效果时,一定是要让使用户能看到增加了滤镜之后的效果是什么样子的,所以我们需要显示解决后的数据。

这三部分功能GPUImage为我们封装好了对应的类来负责实现,我们只要要按需用即可以。

DEMO

我参考了网上的文章和GPUImage的官方demo之后,把几种常使用场景的是实现汇总了一下。

大家可以去下载这个代码,算是GPUImage用的简单入门。

Sunxb/GPUImageDemo

demo里面包括我们这这常使用场景的实现,而后我还写了混合滤镜的用,还有少量其余细节的东西。

实现的效果

结束语

GPUImage入门很简单,但毕竟这么强大的框架,要学透还是要我们在日常的用中继续的探究了。一起加油。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » iOS用GPUImage为视频和图片增加滤镜

发表回复