GPUImage进行滤镜拍照

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/SuperChaoXu/article/details/91441599

# GPUImageTest
利用GPUImage进行滤镜拍照
拍摄照片时的效果图为

# 初始化
/// 录制相机
@property(nonatomic, strong)GPUImageStillCamera *camera;
/// 过滤的视图
@property(nonatomic, strong)GPUImageView *preView;
[self.view insertSubview:self.preView atIndex:0];
///设置camera的方向
self.camera.outputImageOrientation =  UIInterfaceOrientationPortrait;
self.camera.horizontallyMirrorFrontFacingCamera = YES;
///防止允许声音通过的情况下,避免录制第一帧黑屏闪屏  拍摄视频时开启 拍照时不用开启
/// [self.camera addAudioInputsAndOutputs];

# 用到的过滤器,组合成一个过滤器组进行使用 当然也可以根据自己的需求自定义过滤器
/// 美白过滤器
@property(nonatomic, strong)GPUImageBrightnessFilter *brightFilter;

/// 饱和
@property(nonatomic, strong)GPUImageSaturationFilter *saturateFilter;

// 磨皮
@property(nonatomic, strong)GPUImageBilateralFilter *bilaFilter;

// 曝光
@property(nonatomic, strong)GPUImageExposureFilter *exposeFilter;

# 生成组合过滤器的代码 获取默认的滤镜组
- (GPUImageFilterGroup*)getCurrentFillterGroup{
    GPUImageFilterGroup *filterGroup = [[GPUImageFilterGroup alloc] init];
    //创建滤镜(设置滤镜的引来关系)
    [self.bilaFilter addTarget:self.brightFilter];
    [self.brightFilter addTarget:self.exposeFilter];
    [self.exposeFilter addTarget:self.saturateFilter];
    /// 默认值
    self.bilaFilter.distanceNormalizationFactor = 8; // //5.5  磨皮 0到10
    self.exposeFilter.exposure = 0;  // 曝光
    self.brightFilter.brightness = 0.1; // 美白亮度 -1 到 1
    self.saturateFilter.saturation = 0.8;  // 饱和度 0到2
    
    filterGroup.initialFilters = @[self.bilaFilter];
    filterGroup.terminalFilter = self.saturateFilter;
    return filterGroup;  
}
# 最后给相机添加上过滤器, 并开始采集数据
 GPUImageFilterGroup *beautiFilter = [self
                                         getCurrentFillterGroup];
     //设置GPUImage的响应链
    [self.camera addTarget:beautiFilter];
    [beautiFilter addTarget:self.preView];
    ///开启采集
    [self.camera startCameraCapture];
    
# 具体详细的代码在demo中
附上自己的github的demo链接(https://github.com/xc19930909yu/GPUImageTest

展开阅读全文

没有更多推荐了,返回首页