我正在尝试用 Swift 编写我自己的 CIFilter。当涉及到该类的真正内容时,我遇到了问题,即 outputImage 方法:
class CustomFilter : CIFilter {
var kernel: CIKernel
var inputImage: CIImage
var color: CIColor
var threshold: NSNumber
// ... stuff omitted ...
func outputImage() -> CIImage {
let zero = NSNumber(double: 0 as Double)
let width = NSNumber(double: inputImage.extent().size.width.native as Double)
let height = NSNumber(double: inputImage.extent().size.height.native as Double)
let src = CISampler(image: inputImage)
let arguments = [src, color, threshold] as [AnyObject]
let extent = [zero, zero, width, height]
return self.apply(
kernel,
arguments: arguments,
options: (kCIApplyOptionExtent: extent)
)
}
}
关于方法最后一行的编译错误信息如下:
Cannot convert the expression's type '(@lvalue CIKernel, arguments: [AnyObject], options: (kCIApplyOptionExtent: [NSNumber]))' to type 'CIKernel!'
有更多 Swift 或 Core Image 经验的人可以给我指明正确的方向吗?即使经过一个小时的尝试和谷歌搜索,我也找不到答案......
请您参考如下方法:
使用方括号创建选项字典:
return self.apply(kernel, arguments: arguments, options: [kCIApplyOptionExtent: extent])
所需参数的类型为 [NSObject : AnyObject]!
