GPUImage录制加美颜、柔光

柔光就是加了一层滤镜,如果是图片上面加柔光,看这个文章就可以了《IOS使用GPUImage滤镜初级试水》。如果是为了给录制的视频加柔光,也是使用的GPUImageSoftLightBlendFilter这个滤镜效果。

一、柔光滤镜

因为GPUImageSoftLightBlendFilterGPUImageTwoInputFilter的子类,而GPUImageTwoInputFilterGPUImageFilter的子类,对两个输入纹理进行通用的处理,需要继承它并准备自己的片元着色器。所以为了方便,就封装了一个柔光类,里面使用一个图片blend.png,专门对视频用。

DSoftLightBlendFilter.h文件

#import "GPUImageFilterGroup.h"
#import "GPUImage.h"

@interface DSoftLightBlendFilter : GPUImageFilterGroup
{
    GPUImagePicture *imageSource ;
}
@end

DSoftLightBlendFilter.m文件

#import "DSoftLightBlendFilter.h"


@implementation DSoftLightBlendFilter
- (id)init
{
    if (!(self = [super init]))
    {
        return nil;
    }
    
    UIImage *image = [UIImage imageNamed:@"blend.png"];
    
    imageSource = [[GPUImagePicture alloc] initWithImage:image];
    
    GPUImageSoftLightBlendFilter *filter = [[GPUImageSoftLightBlendFilter alloc] init];
    
    [self addFilter:filter];
    [imageSource addTarget:filter atTextureLocation:1];
    [imageSource processImage];
    
    self.initialFilters = [NSArray arrayWithObjects:filter, nil];
    self.terminalFilter = filter;
    
    return self;
}
@end

视频使用的时候就像使用一个普通的filter加到GPUImageVideoCamera、GPUImageMovieWriter上面即可。

二、美颜滤镜

美颜滤镜是使用的这个GPUImageBeautifyFilter,在这个基础上我调低了效果,加了一个美颜参数的设置。

//设置美化强度
- (id)initWithDegree:(float)degree;

这样就可以设置不同的美颜强度了。

三、使用

使用两个可以叠加使用,新建一个GPUImageFilterGroup *filterGroup;,然后叠加

filterGroup = [[GPUImageFilterGroup alloc] init];
[filterGroup addFilter:beautifyFilter];
[filterGroup addFilter:m_softLightBlendFilter];
[beautifyFilter addTarget:m_softLightBlendFilter];
[filterGroup setInitialFilters:[NSArray arrayWithObject: beautifyFilter]];
[filterGroup setTerminalFilter:m_softLightBlendFilter];

[filterGroup addTarget:m_filteredVideoView];
[m_videoCamera addTarget:filterGroup];

[m_videoCamera startCameraCapture];

记得录视频把moviewriter加上

//写入加上滤镜
[filterGroup addTarget:m_movieWriter];

四、Demo下载

这个demo同时加入了光度、曝光、对比度、饱和度、柔光、美颜的调节,可以看下效果。

Github下载:https://github.com/DamonHu/SoftLightBlendFilterDemo

Gitosc下载:http://git.oschina.net/DamonHoo/SoftLightBlendFilterDemo

五、demo演示

Last modification:April 28th, 2017 at 05:15 pm
如果看了这个文章可以让你少加会班,可以请我喝杯可乐
已打赏名单
微信公众号

11 comments

  1. kinmo

    想请教你美颜强度那个的具体实现。

    1. 东东
      @kinmo

      美颜就是用的别人的写的滤镜,滤镜的实现他有专门详细的文章,而强度就是在他的基础上面调整混合的强度

  2. 小乔

    链接名称也改成 LOL代练 吧 我已经给你上链了,你看一下能不能用

    1. 东东
      @小乔

      修改好了,我去你网站看的是手机版,暂时没看到,晚点我再看看

  3. 小乔
  4. 小乔

    博客互换友联,大哥我想做你的小弟,收下我把

    1. 东东
      @小乔

      给我说下你博客地址,我晚上加上,大家一起学习,共同进步

      1. 小乔
        @东东

        百度搜索代练库就是我地址这里写上会屏蔽

        1. 东东
          @小乔

          已经加上了

          1. 小乔
            @东东

            恩 我的关键词不是代练库 是 lol代练 麻烦大哥改一下友情链接的关键词 你的博客 关键词是 胡东东博客 吧

            1. 东东
              @小乔

              嗯,那个是链接名称,我已经把描述修改为LOL代练了

Leave a Comment