9

CITemperatureAndTint 是否有任何示例代码或示例?我已经阅读了它的文档,但我需要一些示例来实现它。

4

3 回答 3

18
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 的实现细节,但我认为这两个滑动条给出了温度和色调的变化(即

于 2012-07-13T05:49:39.293 回答
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)
        ])

于 2021-07-25T15:20:58.780 回答
-1

好吧,没有为 CITemperatureAndTint 制作的具体示例,但您可以获取代码来演示将 NSImage 用作屏幕外绘图目标。

该代码的 URL 是https://developer.apple.com/library/mac/#samplecode/Tinted_Image/Introduction/Intro.html#//apple_ref/doc/uid/DTS10000412-Intro-DontLinkElementID_2

我相信您可以修改它以使用 CITemperatureAndTint 或修改现有代码以满足您的需求。

希望这可以帮助。

于 2012-07-13T05:31:48.227 回答