GPUImage混合滤镜的简单使用

import "ViewController.h"
#import "GPUImage.h"
@interface ViewController ()
{
    UIImage *_inputImage;
    UIImage *_outputImage;
}
@property (weak, nonatomic) IBOutlet UIImageView *iconImageView;

@property (nonatomic,strong) GPUImagePicture        *picture;
@property (nonatomic,strong) GPUImageView           *imageView;
@property (nonatomic,strong) GPUImageFilterPipeline *pipeline;

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    // 图片输入源
    _inputImage = [UIImage imageNamed:@"icon"];

    // 初始化 picture
    _picture    = [[GPUImagePicture alloc] initWithImage:_inputImage smoothlyScaleOutput:YES];

    // 初始化 imageView
    _imageView  = [[GPUImageView alloc] initWithFrame:self.iconImageView.bounds];
    [self.iconImageView addSubview:_imageView];

    // 使用 GPUImageFilterPipeline 添加组合滤镜
    GPUImageRGBFilter  *filter1 = [[GPUImageRGBFilter alloc] init];
    GPUImageToonFilter *filter2 = [[GPUImageToonFilter alloc] init];

    NSMutableArray *arrayTemp = [NSMutableArray array];
    [arrayTemp addObject:filter2];
    [arrayTemp addObject:filter1];

    /**
     *  @author hj, 07.02 2016 14:07
     *
     *  初始化 pipeline
     *
     *  @param filters 滤镜数组
     *  @param input   被渲染的输入源,可以是GPUImagePicture、GPUImageVideoCamera等
     *  @param output  渲染后的输出容器,一般是显示的视图
     *
     *  @return GPUImageFilterPipeline的对象
     */
    _pipeline = [[GPUImageFilterPipeline alloc] initWithOrderedFilters:arrayTemp input:_picture output:_imageView];

    // 处理图片
    [_picture processImage];
    [filter1 useNextFrameForImageCapture]; // 这个filter 可以是filter1 filter2等

    // 输出处理后的图片
    _outputImage = [_pipeline currentFilteredFrame];

    // 保存到系统相册
    UIImageWriteToSavedPhotosAlbum(_outputImage, self, nil, nil);

}

@end


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值