CIKernelでオリジナルのCIFilterを作成しようとしています。iOS:CIColorKernel applyWithExtent警告メッセージ
コードはこちらです。 CIColorKernel applyWithExtent:roiCallback:引数:
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)!
}
と警告メッセージが
注意されたコールバックを無視し、お奨めしません。代わりにapplyWithExtent:arguments:を使用してください。
私はCIKernelとCIColorKernelの違いを理解しました。 –
また、Core Imageについてのあなたの本が見つかりました。その外観はとても役に立ちますので、私はそれを購入します:) –