我们正在构建一些照片调整工具,大多数是以这种方式构建的:
每次调整都有这样的代码:
var blendFilter = GPUImageAlphaBlendFilter()
var mix = getValue() // assume this exists
blendFilter.mix = mix
var styledImageSource = getImageSource() // assume returns a GPUImagePicture
styledImageSource.addTarget(blendFilter, atTextureLocation: 1)
blendFilter.useNextFrameForImageCapture()
styledImageSource.processImage()
return blendFilter
最后,如果只有一个混合,我们运行此代码:
var originalImage = getOriginalImage() // assume gets an UIImage that we want to filter
filter = getBlendFilter() // assume this calls the above and gets a blendFilter
var finalImage = filter.imageByFilteringImage(originalImage)
上面的finalImage很棒并且混合了。
但是现在,我们有许多不同的调整工具可以做各种事情。让我们假设有些是混合,但他们需要做最后的imageByFilteringImage。我们希望将它们链接起来,这样我们就不会在每个图像之间创建图像,而是希望将它们链接起来。
以下是我们尝试过的一些概念:
我想的是另一种方式,也许是过滤器组?
我们如何最好地解决这个问题?
谢谢!