答案 0 :(得分:3)
我已将其更新为正常运行,因为我试图向您展示。我忘记了属性是每个过滤器,每个输入键是属性字典中的键的名称。这些值本身就是包含我们想要的信息的字典。
但请注意,这并不能完成所有工作。如果您想要更多信息并自己做一些工作,则必须查找一些内容。这样做是迭代所有过滤器的所有参数并打印出它们的名称,最小值和最大值,即使这没有意义。 (例如,图像没有最小值或最大值 - 在这种情况下,它会打印“(null)”。)请注意,许多参数没有最小值或最大值。它们可以覆盖整个浮点范围。如果您要创建滑块,请使用kCIAttributeSliderMin
和kCIAttributeSilderMax
属性,而不是kCIAttributeMin
和kCIAttributeMax
。
您还可以获取属性类型和类,并打印出其他类型值的范围(如果这有意义)。例如,一些参数是点,矩形等。
// Insert code here to initialize your application
// Get the list of all filters
NSArray* allFilters = [CIFilter filterNamesInCategories:nil];
// Iterate over the filters
NSEnumerator* filterEnum = [allFilters objectEnumerator];
NSString* nextFilter = nil;
while ((nextFilter = [filterEnum nextObject]) != nil)
{
NSLog (@"filter = %@", nextFilter);
// Get all of the input parameters to this filter
CIFilter *filter = [CIFilter filterWithName:nextFilter]; // 3
NSDictionary* attribs = [filter attributes];
NSArray* inputs = [filter inputKeys];
// Iterate over the input keys
NSEnumerator* inputEnum = [inputs objectEnumerator];
NSString* nextInput = nil;
while ((nextInput = [inputEnum nextObject]) != nil)
{
// Note that you'll have to do some work here because some
// parameters return vectors instead of just numbers, but
// this is the general idea
NSDictionary* paramAttrib = [attribs objectForKey:nextInput];
NSString* name = [paramAttrib objectForKey:kCIAttributeDisplayName];
NSNumber* min = [paramAttrib objectForKey:kCIAttributeMin];
NSNumber* max = [paramAttrib objectForKey:kCIAttributeMax];
NSLog (@"param: %@, min = %@, max = %@", name, min, max);
}
}
另外,我非常认真地对文档提出错误。如果你没有提交错误,他们肯定不会改变它们。我已经提交了文档错误,并且已经修复了。
答案 1 :(得分:0)
您可以在this项目中找到所有过滤器及其属性。了解过滤器的详细信息非常有用。