2016-05-09 53 views

回答

0

如果你想設置只是一個像素,你可以創建一個小色內核比較當前所傳遞的目標座標的座標和顏色輸出適當。例如:

let kernel = CIColorKernel(string: 
"kernel vec4 setPixelColorAtCoord(__sample pixel, vec2 targetCoord, vec4 targetColor)" + 
    "{" + 
    " return int(targetCoord.x) == int(destCoord().x) && int(targetCoord.y) == int(destCoord().y) ? targetColor : pixel; " + 
    "}" 
) 

然後,給出的形象,比方說,一個穩定的紅色:

let image = CIImage(color: CIColor(red: 1, green: 0, blue: 0)) 
    .imageByCroppingToRect(CGRect(x: 0, y: 0, width: 640, height: 640)) 

如果我們要100像素設置在500,藍:

let targetCoord = CIVector(x: 500, y: 100) 
let targetColor = CIColor(red: 0, green: 0, blue: 1) 

以下將創建一個名爲finalCIImage,其中一個紅色的海中有一個藍色像素:

let args = [image, targetCoord, targetColor] 
let final = kernel?.applyWithExtent(image.extent, arguments: args) 

如果你想繪製多個像素,這可能不是最好的解決方案。

Simon

相關問題