2014-11-03 66 views
0

我想創建一個CIColorClampFilter https://developer.apple.com/library/mac/documentation/GraphicsImaging/Reference/CoreImageFilterReference/index.html#//apple_ref/doc/filter/ci/CIColorClampCI內部錯誤,內核參數1和參數

它說我可以設置一個鍵「inputMinComponents」作爲之間類型不匹配一個[0,0,0,0]或任何我想要的RGB值。

但這代碼:

filter = CIFilter(name:"CIColorClamp") 
filter.setValue(ciImage, forKey: kCIInputImageKey) 
filter.setValue([0,0,0,0], forKey: "inputMinComponents") 

導致此錯誤:

CI internal error, type mismatch between kernel parameter 1 and argument 

我已經到處尋找其他CIColorClamp例子,但一無所獲。

你知道最近我想爲「inputMinComponents」鍵傳遞的值有什麼問題嗎?

回答

2

顯然SWIFT的智能鑄件不工作,你必須explcitly創建一個CIVector

filter = CIFilter(name:"CIColorClamp") 
filter.setValue(ciImage, forKey: kCIInputImageKey) 
var lowerLevel = CIVector(x: 0.1, y: 0.1, z: 0.3, w: 0) 
filter.setValue(lowerLevel, forKey: "inputMinComponents") 
var upperLevel = CIVector(x: 0.5, y: 0.7, z: 0.9, w: 1) 
filter.setValue(upperLevel, forKey: "inputMaxComponents") 
+1

斯威夫特沒有自動轉換的一切。實際上,它需要在比C更多的地方進行明確的轉換和轉換。儘管如此,如果你用適當的'ArrayLiteralConvertible'實現擴展'CIVector',你可以讓自己的問題中的代碼工作。 – rickster 2014-11-04 01:55:36

+0

謝謝你的提示XD – Aggressor 2014-11-04 03:54:05