GPUImageStillCamera 处理实时相机图像
示例:
#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];
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);
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
测试:(与上面关键代码的运行效果有点区别,是根据上一篇文章的示例代码修改的,将处理后的图片保存到系统相册)
