目前我正在像這樣級聯 CIFilters:
let filterA = CIFilter(...)
let filterB = CIFilter(...)
let filterC = CIFilter(...)
var outputImage = CIImage(data: myInputData, options: [.applyOrientationProperty : true])
filterA.setValue(outputImage, forKey: kCIInputImageKey)
var outputImage = filterA.outputImage
filterB.setValue(outputImage, forKey: kCIInputImageKey)
var outputImage = filterB.outputImage
filterC.setValue(outputImage, forKey: kCIInputImageKey)
var outputImage = filterC.outputImage
return render(ouputImage)
var outputImage以某種方式使用一個效率低下嗎?或者一般來說,級聯CIFilters的最高效的方式是什么?
uj5u.com熱心網友回復:
基本上沒問題。你是否使用這些額外的變數并不重要,因為 Core Image 只在影像渲染后計算效果。
我個人不建議為每個影像重復使用相同的變數,可能會混淆使用哪個影像的位置。相反,我會直接從每個過濾器傳遞屬性:
filterA.setvalue(inputImage, forKey: kCIInputImageKey)
filterB.setValue(filterA.outputImage, forKey: kCIInputImageKey)
filterC.setValue(filterB.outputImage, forKey: kCIInputImageKey)
return render(filterC.outputImage)
性能將完全相同。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/360584.html
下一篇:如何將任何函式作為引數傳遞?
