这里组合滤镜我使用的是GPUImageFilterPipeline这个类
一、步骤:1、创建图片处理类 GPUImagePicture 把图片传进去stillImage
GPUImagePicture *staticPicture = [[GPUImagePicture alloc] initWithImage:stillImage smoothlyScaleOutput:YES];
2、创建多个滤镜的对象
//RGB滤镜 GPUImageRGBFilter * RGBFilter = [[GPUImageRGBFilter alloc] init];
//卡通滤镜 GPUImageToonFilter * toonFilter = [[GPUImageToonFilter alloc] init];
3、把多个滤镜对象放到数组中
NSMutableArray *arrayTemp=[NSMutableArray array];[arrayTemp addObject:RGBFilter];[arrayTemp addObject:toonFilter];
4、创建GPUImageFilterPipeline对象 初始化使用initWithOrderedFilters:(NSArray*) filters input:(GPUImageOutput*)input output:(id)output;
这个方法;这个方法需要三个参数:
filters:多个滤镜的数组
input:被渲染的图片(步骤1 的staticPicture 对象)
output:渲染后的图片的容器(类型是view)
GPUImageFilterPipeline * filterPipeline = [[GPUImageFilterPipeline alloc] initWithOrderedFilters:arrayTemp input:staticPicture output:output];
5、渲染图片 使用 processImage(此方法是GPUImagePicture类下的)和useNextFrameForImageCapture(此方法是GPUImageOutput下也就是单个滤镜);
[staticPicture processImage];
[filter useNextFrameForImageCapture];//这个filter 可以是RGBFilter toonFilter等
6、获取图片 使用currentFilteredFrame(此方法是GPUImageFilterPipeline类下的);
UIImage *img = [pipeline currentFilteredFrame];
7、保存图片
UIImageWriteToSavedPhotosAlbum(img, self,nil, nil);
网友评论