2012-07-13 192 views

回答

14
CIFilter *yourFilter = [CIFilter filterWithName:@"CITemperatureAndTint"]; 
[yourFilter setValue:yourInputImage forKey:@"inputImage"]; 
[yourFilter setValue:[CIVector vectorWithX:6500 Y:500] forKey:@"inputNeutral"]; // Default value: [6500, 0] Identity: [6500, 0] 
[yourFilter setValue:[CIVector vectorWithX:1000 Y:630] forKey:@"inputTargetNeutral"]; // Default value: [6500, 0] Identity: [6500, 0] 
CIImage *resultImage = [yourFilter valueForKey: @"outputImage"]; 
UIImage *resultOutputImage = [UIImage imageWithCGImage:[context createCGImage:resultImage fromRect:resultImage.extent]];  

你可以看到什麼值的色溫給你this wikipedia link哪些顏色。

For Reference

CITemperatureAndTint有三個輸入參數:圖像,中性和TargetNeutral。 Neutral和TargetNeutral是2D CIVector類型,並且在它們中,請注意第一個維度指的是溫度,第二個維度指向Tint。 CITemperatureAndTint過濾器的基本功能是計算一個矩陣,該矩陣將來自由中性(srcTemperature,srcTint)定義的源白點的RGB值調整爲由TargetNeutral(dstTemperature,dstTint)定義的目標白點,然後將該矩陣應用於輸入圖像(使用CIColorMatrix過濾器)。如果Neutral和TargetNeutral具有相同的值,則在應用此濾鏡後圖像不會改變。我不知道有關iPhoto的實現細節,但我認爲兩個滑動條會給您添加到源圖像的溫度和色調變化(即源和目標溫度和色調值之間的差異)。

+0

謝謝你,但我仍然沒有得到如何控制着色。例如,我還沒有想出如何將圖像着色爲藍色。 – 2013-12-20 07:09:07