CITemperatureAndTint是否有任何示例代码或示例?我已阅读其文档但我需要一些示例来实现它。
答案 0 :(得分:17)
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中的哪些颜色。
CITemperatureAndTint有三个输入参数:Image,Neutral和TargetNeutral。中性和TargetNeutral属于2D CIVector类型,在两者中,请注意第一维指的是温度,第二维指的是Tint。 CITemperatureAndTint过滤器基本上做的是计算一个矩阵,该矩阵使RGB值适应由中性(srcTemperature,srcTint)定义的源白点到TargetNeutral定义的目标白点(dstTemperature,dstTint),然后在输入图像上应用此矩阵(使用CIColorMatrix过滤器)。如果“中性”和“目标中性”具有相同的值,则应用此滤镜后图像不会更改。我不知道有关iPhoto的实现细节,但我认为两个滑动条给出了要添加到源图像的温度和色调变化(即源温度和目标温度和色调值之间的差异)。
答案 1 :(得分:0)
也许它可以帮助你@Sherwin Zadeh
温度:
var value: CGFloat = 0 // Min: -3000, Max: 3000
return image.applyingFilter("CITemperatureAndTint", parameters: [
"inputNeutral": CIVector.init(x: value + 6500, y: 0),
"inputTargetNeutral": CIVector.init(x: 6500, y: 0)
])
色调:
var value: CGFloat = 0 // Min: -100, Max: 100
return image.applyingFilter("CITemperatureAndTint", parameters: [
"inputNeutral": CIVector.init(x: 6500, y: value),
"inputTargetNeutral": CIVector.init(x: 6500, y: 0)
])
答案 2 :(得分:-1)
没有针对CITemperatureAndTint的具体示例,但您可以获取代码来演示如何使用NSImage作为屏幕外绘图目标。
我确信您可以修改它以使用CITemperatureAndTint或修改现有代码以满足您的需求。
希望这有帮助。