【发布时间】:2012-11-05 13:31:20
【问题描述】:
我想做什么:
我想实现用户在图像上使用 CIFilters 的能力。所以我需要以某种方式修复它的顺序。例如,如果用户打开图像,然后应用CIGaussianBlur,然后是CIColorControls,然后是CISepia,我需要得到这样的结果:
On user opened image apply CIGaussianBlur -> on CIGaussianBlur output image apply CIColorControls - > on CIColorControls output image apply CISepia.
没关系。但是如果用户关闭 CIGaussianBlur 怎么办?然后我需要重复这个效果的序列,而不会模糊。它看起来像这样:
On user opened image apply CIColorControls -> on CIColorControls output image apply CISepia.
问题
是否可以这样做:
应用任何效果后,在 NSMutableArray 或 NSMutableDictionary 中添加一些字符串。然后在应用其他效果时,检查 NSMutableArray 或 NSMutableDictionary 内容,如下所示:
如果索引 0 处的对象等于“模糊”,则在源图像上应用模糊,然后像当前效果的输入图像一样获取模糊的输出图像
等等?因此,每次都会按照用户制作的顺序重新应用效果。
如果可能的话,也许有人可以建议我任何解决方案?
【问题讨论】:
-
效果应该可以应用多次吗?如果是这样,那么 NSMutableArray 是显而易见的选择。
-
好吧,它们只能应用一次,但用户总是可以随时调整它的参数。如果用户这样做:
CIColorControls->CIGaussianBlur->CISepia->CISaturation他可以获得灰度图像,如果他这样做:CIColorControls->CIGaussianBlur->CISaturation->CISepia也许他可以获得棕褐色图像?这取决于编码时将使用的逻辑巫婆。但这没什么大不了的。两种变体都适合我。 -
如果我选择 NSMutableArray,有没有办法检查它的内容并根据添加方法的顺序,而不是在
while循环中写很多if's?
标签: objective-c image macos effects core-image