GPUImage做滤镜

IOS端滤镜开源代码比较少,基本上强大的就是GPUImage了,操作简单而且强大。
基本功能可以实现,相机,摄像以及静态图片的滤镜

live filter:
调用GPUImageStillCamera 作为相机,并将相机添加到一个GPUImageView中
_stillCamera = [[GPUImageStillCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
切记使用小一些的尺寸initWithSessionPreset:AVCaptureSessionPreset640x480。否则会出现memory warning
[_stillCamera addTarget:self.imageView];

如果需要添加fiilter。就通过其中添加
_cropFilter = [[GPUImageCropFilter alloc] initWithCropRegion:CGRectMake(0.0f, 0.0f, 1.0f
, 0.96)];
[_stillCamera addTarget:_cropFilter];
[_cropFilter addTarget:self.imageView];
如果是多个滤镜,则
[_stillCamera addTarget:_cropFilter1];
[_cropFilter1 addTarget:_cropFilter2];
[_cropFilter2 addTarget:self.imageView];

拍照后想生成图片
[_stillCamera capturePhotoAsImageProcessedUpToFilter:lastFilter
withCompletionHandler:^(UIImage *processed, NSError *error) ;

lastFilter的解释为finalFilterInChain
也就是说,需要使用最后一个addTarget进来的滤镜

static filter:
首先设置初始图片到GPUImagePicture
_staticPicture=[[GPUImagePicture alloc]initWithImage:selectedImage smoothlyScaleOutput:NO];
加filter与上面相同
需要生成新的图片时,调用
[_staticPicture processImage];
[filter imageFromCurrentlyProcessedOutput];

非常简单。附上过滤后的图

原文地址:https://www.cnblogs.com/yingkong1987/p/2993325.html