Photoshop中渐变贴图背后的数学原理是什么?

平面设计 adobe-photoshop 坡度
2022-01-15 08:29:41

我正在尝试以编程方式实现 Photoshop 的渐变图。考虑下面显示的渐变图,其中所有白色分量都被绿色替换,黑色被蓝色替换。对于其他颜色成分,Photoshop 根据蓝色和绿色之间的线性渐变进行计算。我知道这个计算背后有一个数学。有没有人知道找到特定输入颜色值的输出颜色的公式?

在此处输入图像描述

1个回答

对于大多数计算,Photoshop 单独使用每个 RGB 通道,而不考虑其他两个(只要您处于 RGB 模式,在 CMYK 模式下,事情可能会变得很奇怪)。

Photoshop 只是对每个通道进行线性插值。如果我们这样定义颜色(并假设从 0 开始的 2d 渐变以使事情变得更容易):

Starting color:   [r0, g0, b0]
End color:        [r1, g1, b1]
starting positon: 0
end positon:      l
current position: p

现在对于沿线的每个点,每个通道的公式如下:

r = r0 + ( r1 - r0 ) * (p/(l-1)) )

假设您想要在 5 个像素的距离上从黄色 (255, 255, 20) 到青色 (0, 255, 200) 的渐变,您最终会得到:

     0    1    2    3    4
r: 255  192  127   64    0
g: 255  255  255  255  255
b:  20   65  110  155  200

如您所见,每个通道在相同数量的像素上的变化始终相同(r1 - r0)。在这种情况下:

r: -63.75
g: 0
b: +45