0
我試圖用CIKernel製作原創的CIFilter。iOS:CIColorKernel applyWithExtent警告消息
代碼在這裏。
var kernel: CIKernel?
var inputImage: CIImage?
override init() {
super.init()
self.kernel = createKernel()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
self.kernel = createKernel()
}
func outputCustomImage() -> CIImage? {
if let inputImage = self.inputImage {
let dod = inputImage.extent.insetBy(dx: -1, dy: -1)
let args = [inputImage as AnyObject]
let callback: CIKernelROICallback = {
(index, rect) in
return rect.insetBy(dx: -1, dy: -1)
}
return kernel!.applyWithExtent(dod, roiCallback: callback, arguments: args)
}
return nil
}
private func createKernel() -> CIKernel {
let kernelString =
"kernel vec4 RGB_to_GBR(sampler source_image)\n" +
"{\n" +
"vec4 originalColor, twistedColor;\n" +
"originalColor = sample(source_image, samplerCoord(source_image));\n" +
"twistedColor.r = originalColor.g;\n" +
"twistedColor.g = originalColor.b;\n" +
"twistedColor.b = originalColor.r ;\n" +
"twistedColor.a = originalColor.a;\n" +
"return twistedColor;\n" +
"}\n"
return CIKernel(string: kernelString)!
}
和警告消息是
注:CIColorKernel applyWithExtent:roiCallback:參數:忽略回調,並且不推薦。使用applyWithExtent:arguments:來代替。
感謝您的回答,我瞭解CIKernel和CIColorKernel之間的區別。 –
另外我找到了關於Core Image的書。它看起來很有幫助,所以我會買它:) –