在CameraView上应用Live GpuImage

时间:2013-06-12 19:21:14

标签: iphone xcode xcode4.6 gpuimage

我目前正在开发一款应该使用GPUImage框架的相机滤镜应用。 我已经让定制相机工作,现在我想在我所获得的uiview上只应用一个过滤器。所以过滤器一直在我的UIView上,它应该用过滤器保存图片。 如果你能帮助我,我真的很感激

1 个答案:

答案 0 :(得分:4)

项目的主要自述文件描述了您需要的确切步骤:

GPUImageVideoCamera *videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;

GPUImageFilter *customFilter = [[GPUImageFilter alloc] initWithFragmentShaderFromFile:@"CustomShader"];
GPUImageView *filteredVideoView = [[GPUImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, viewWidth, viewHeight)];

// Add the view somewhere so it's visible

[videoCamera addTarget:customFilter];
[customFilter addTarget:filteredVideoView];

[videoCamera startCameraCapture];

首先,创建将提取实时视频的GPUImageCamera实例。然后,您创建所需的任何过滤器(上述代码中的自定义过滤器)并将其作为相机的目标附加。最后,设置一个GPUImageView实例,其中将显示已过滤的摄像机源,并将其作为过滤器的目标。因此,视频帧将从管道从相机流向滤波器流向视图。

如果您希望能够保存相机中的照片,则您需要使用GPUImageStillCamera而不是上面的视频相机实例。静态相机将提供照相机的视频预览,让您可以按需拍摄全分辨率照片。

同样,所有这些都在框架附带的文档中清楚地解释了(并显示在GitHub项目的首页上)。