CITemperatureAndTint 是否有任何示例代码或示例?我已经阅读了它的文档,但我需要一些示例来实现它。
3 回答
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]];
您可以在此 wikipedia 链接中查看色温的哪些值为您提供哪些颜色。
CITemperatureAndTint 有三个输入参数:Image、Neutral 和 TargetNeutral。Neutral 和 TargetNeutral 都是 2D CIVector 类型,在它们中,注意第一个维度是指温度,第二个维度是指色调。CITemperatureAndTint 过滤器的基本作用是计算一个矩阵,该矩阵将 RGB 值从由 Neutral (srcTemperature, srcTint) 定义的源白点调整到由 TargetNeutral (dstTemperature, dstTint) 定义的目标白点,然后将此矩阵应用于输入图像(使用 CIColorMatrix 过滤器)。如果 Neutral 和 TargetNeutral 的值相同,则应用此滤镜后图像不会发生变化。我不知道 iPhoto 的实现细节,但我认为这两个滑动条给出了温度和色调的变化(即
也许它可以帮助你@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)
])
好吧,没有为 CITemperatureAndTint 制作的具体示例,但您可以获取代码来演示将 NSImage 用作屏幕外绘图目标。
我相信您可以修改它以使用 CITemperatureAndTint 或修改现有代码以满足您的需求。
希望这可以帮助。