GPUImage进行滤镜拍照

1 篇文章 0 订阅

# 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值