您的位置:首页 > 产品设计 > UI/UE

iOS GPUImage之GPUImageStillCamera(2)

2016-06-30 21:31 417 查看
GPUImageStillCamera 处理实时相机图像

示例:

//
//  ViewController.m
//  GPUImageDemo
//
//  Created by hj on 16/6/30.
//  Copyright © 2016年 hj. All rights reserved.
//

#import "ViewController.h"

#import "GPUImage.h"

@interface ViewController ()
{
UIImage *_inputImage;
UIImage *_outputImage;
}

@property (weak, nonatomic) IBOutlet UIImageView *iconImageView;
@property (nonatomic,strong) GPUImageOutput<GPUImageInput>   *filter;
@property (nonatomic,strong) GPUImageView                    *filterImageView;
@property (nonatomic,strong) GPUImageStillCamera *stillCamera;

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];

// 初始化stillCamera
self.stillCamera = [[GPUImageStillCamera alloc] init];
self.stillCamera.outputImageOrientation = UIInterfaceOrientationPortrait;

// 初始化滤镜
self.filter = [[GPUImageSepiaFilter alloc] init];

// 添加滤镜
[self.stillCamera addTarget:_filter];

// 添加滤镜显示视图
self.filterImageView = [[GPUImageView alloc] initWithFrame:self.iconImageView.frame];
[self.iconImageView addSubview:self.filterImageView];
[self.filter addTarget:self.filterImageView];

// 开始捕获
[self.stillCamera startCameraCapture];
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
// 截取某一时刻的滤镜图片
[self.stillCamera capturePhotoAsImageProcessedUpToFilter:self.filter withCompletionHandler:^(UIImage *processedImage, NSError *error) {

// 耗内存
NSData *dataForJPEGFile = UIImageJPEGRepresentation(processedImage, 0.8);

// 保存到Document
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSError *error2 = nil;
if (![dataForJPEGFile writeToFile:[documentsDirectory stringByAppendingPathComponent:@"FilteredPhoto.jpg"] options:NSAtomicWrite error:&error2])
{
return;
}
}];
}

@end

测试:(与上面关键代码的运行效果有点区别,是根据上一篇文章的示例代码修改的,将处理后的图片保存到系统相册)


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios GPUImage