我被分配将色温设置为 1000 到 10.000 之间的值,就像在 Photoshop 中一样。到目前为止,我只能找到一个显示值的表,我 试图在 Gimp 中找到相同的函数(因为它是开源的,我会通过阅读代码来学习),但没有直接的等价物。我必须选择颜色级别并弯曲一些曲线。有人告诉我,客户希望像在 Photoshop 中一样设置值。任何人都可以指出正确的方向来创建规模吗?
编辑:链接已更正。
我被分配将色温设置为 1000 到 10.000 之间的值,就像在 Photoshop 中一样。到目前为止,我只能找到一个显示值的表,我 试图在 Gimp 中找到相同的函数(因为它是开源的,我会通过阅读代码来学习),但没有直接的等价物。我必须选择颜色级别并弯曲一些曲线。有人告诉我,客户希望像在 Photoshop 中一样设置值。任何人都可以指出正确的方向来创建规模吗?
编辑:链接已更正。
您已经找到了每种色温的 RGB 等效值表,但您没有说明在哪里找到了我自己的:http ://www.vendian.org/mncharity/dir3/blackbody/
自然场景反射的光与照射到它的光的颜色成比例。这意味着简单的线性平移应该会产生预期的效果。如果我们假设现有图像已经是白平衡的,因此纯白色是 (255,255,255),那么只需将每个像素的每个 r,g,b 值乘以对应于色温的比例即可。
这是 Python 中的示例代码。乘法是用矩阵间接完成的。
from PIL import Image
kelvin_table = {
1000: (255,56,0),
1500: (255,109,0),
2000: (255,137,18),
2500: (255,161,72),
3000: (255,180,107),
3500: (255,196,137),
4000: (255,209,163),
4500: (255,219,186),
5000: (255,228,206),
5500: (255,236,224),
6000: (255,243,239),
6500: (255,249,253),
7000: (245,243,255),
7500: (235,238,255),
8000: (227,233,255),
8500: (220,229,255),
9000: (214,225,255),
9500: (208,222,255),
10000: (204,219,255)}
def convert_temp(image, temp):
r, g, b = kelvin_table[temp]
matrix = ( r / 255.0, 0.0, 0.0, 0.0,
0.0, g / 255.0, 0.0, 0.0,
0.0, 0.0, b / 255.0, 0.0 )
return image.convert('RGB', matrix)
这是几个示例。第一个是原始的,然后是 2500K 和 9500K 的输出。