(Stack Overflow的第一篇文章-所以,嗨,“紧张地挥手”)

我正在成功使用GPUImage库-并设法使用swift获得了一个用于静态图像的简单滤镜。

但是我在尝试将多个过滤器链接在一起时遇到问题。库中包含的示例似乎并未涵盖这一点。有很多客观的C示例,但并不迅速。

任何人都可以举例说明如何申请:

2个混合滤镜以及一个亮度,对比度和饱和度滤镜可用于单个静态图像?

我认为这足够复杂,无法涵盖Swift中该库的大多数用法。谢谢。

最佳答案

Swift中的分配和链接过滤器与Objective-C中的相同,只是语法转换。例如,以下是将两个静态图像输入链接到Objective-C中的混合滤镜,然后将该混合的结果定向到对比度滤镜并捕获最终图像的方式:

GPUImageOverlayBlendFilter *blendFilter = [[GPUImageOverlayBlendFilter alloc] init];
[stillImageSource1 addTarget:blendFilter];
[stillImageSource2 addTarget:blendFilter];

GPUImageContrastFilter *contrastFilter = [[GPUImageContrastFilter alloc] init];
[blendFilter addTarget:contrastFilter];

[contrastFilter useNextFrameForImageCapture];
[stillImageSource1 processImage];
[stillImageSource2 processImage];

UIImage *currentFilteredImage = [contrastFilter imageFromCurrentFramebuffer];

这在Swift中是等效的:
let blendFilter = GPUImageOverlayBlendFilter()
stillImageSource1.addTarget(blendFilter)
stillImageSource2.addTarget(blendFilter)

let contrastFilter = GPUImageContrastFilter()
blendFilter.addTarget(contrastFilter)

contrastFilter.useNextFrameForImageCapture()
stillImageSource1.processImage()
stillImageSource2.processImage()

let currentFilteredImage = contrastFilter.imageFromCurrentFramebuffer()

如您所见,这都是语法,实际调用方式没有什么不同。您可以使用Objective-C示例代码作为您想要做的事情的基础,而只需在Swift等效代码中重写它即可。我随框架附带的Swift示例非常简单(在实时视频上使用单个过滤器的微型应用程序)或相当复杂(执行框架中每个过滤器和操作的测试用例应用程序)。

关于ios - 快速链接具有GPUImage的滤镜,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27545983/

10-11 18:26