描述所有内置CIFilter
的Apple Core Image Filter Reference
被标记为“不再更新”。
Looks like,它的上一次更新是在2016年。此后,2017年和2018年的WWDC视频宣布了其他过滤器(实际上,此页面上没有出现)。
有人知道最新的内置Core Image过滤器列表吗?
(在Apple Dev Forum上也有人问过问题,但到目前为止还没有回答。)
答案 0 :(得分:2)
我创建了一个小项目来查询iOS设备,(1)列出所有可用的过滤器,(2)列出有关每个输入属性的所有内容。可以找到here这个项目。
相关代码:
var ciFilterList = CIFilter.filterNames(inCategories: nil)
此行创建所有可用过滤器的[String]
。如果只希望使用“ CICategoryBlur”类别的所有可用过滤器,请用它替换nil
。
print("=======")
print("List of available filters")
print("-------")
for ciFilterName in ciFilterList {
print(ciFilterName)
}
print("-------")
print("Total: " + String(ciFilterList.count))
不言自明。当我在运行iOS 12.0.1的iPad mini上运行该软件时,列出了207个过滤器。注意:我从未在macOS上尝试过此操作,但是由于它确实不使用UIKit
,因此我相信它会起作用。
let filterName = "CIZoomBlur"
let filter = CIFilter(name: filterName)
print("=======")
print("Filter Name: " + filterName)
let inputKeys = filter?.inputKeys
if inputKeys?.count == 0 {
print("-------")
print("No input attributes.")
} else {
for inputKey in inputKeys! {
print("-------")
print("Input Key: " + inputKey)
if let attribute = filter?.attributes[inputKey] as? [String: AnyObject],
let attributeClass = attribute[kCIAttributeClass] as? String,
let attributeDisplayName = attribute["CIAttributeDisplayName"] as? String,
let attributeDescription = attribute[kCIAttributeDescription] as? String {
print("Display name: " + attributeDisplayName)
print("Description: " + attributeDescription)
print("Attrbute type: " + attributeClass)
switch attributeClass {
case "NSNumber":
let minimumValue = (attribute[kCIAttributeSliderMin] as! NSNumber).floatValue
let maximumValue = (attribute[kCIAttributeSliderMax] as! NSNumber).floatValue
let defaultValue = (attribute[kCIAttributeDefault] as! NSNumber).floatValue
print("Default value: " + String(defaultValue))
print("Minimum value: " + String(minimumValue))
print("Maximum value: " + String(maximumValue))
case "CIColor":
let defaultValue = attribute[kCIAttributeDefault] as! CIColor
print(defaultValue)
case "CIVector":
let defaultValue = attribute[kCIAttributeDefault] as! CIVector
print(defaultValue)
default:
// if you wish, just dump the variable attribute to look at everything!
print("No code to parse an attribute of type: " + attributeClass)
break
}
}
}
}
}
print("=======")
再次,相当不言自明。我正在编写的应用仅适用于使用单个CIImage
的过滤器以及属性限制为NSNumber
,CIColor
和CIVector
的过滤器,因此会属于switch
语句的默认部分。但是,它应该使您入门!如果您希望看到“原始”版本,请查看attribute
变量。
最后,我建议由Simon Gladman开发的名为Filterpedia的东西。这是一个iPad应用程序(仅限横向使用),可让您试验几乎所有可用的过滤器以及具有默认/最大/最小值的所有属性。但是要注意两件事。 (1)它是用Swift 2编写的,但是它是Swift 4 fork here。 (2)还有许多使用自定义CIKernels
的自定义过滤器。
答案 1 :(得分:1)
我创建了一个website called CIFilter.io,其中列出了所有内置的CIFilters和一个companion app,您可以根据需要尝试使用它们{@ 3}。这应该具有所有最新的CIFilter信息-我已经为iOS 13更新了它,并打算继续保持更新。
有关该项目的更多信息,请访问in this blog post。