1

我目前正在开发一个应该使用 GPUImage 框架的相机滤镜应用程序。我已经让自定义相机工作了,现在我只想在我得到的 uiview 上应用一个过滤器。所以过滤器一直在我的 UIView 上,它应该用过滤器保存图片。如果你能帮助我,我将非常感激

4

1 回答 1

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 项目的首页上)。

于 2013-06-12T20:17:49.720 回答