我最好的近似点是:
(r , g , b ) = (f(r), f(g), f(b)) where f(x) = 0.001468x^2 + 0.647295x + 4.04025
How I derived that:
Let c = (r, g, b) = base color
.
Let c = (r , g , b ) = resulting color
.
I let c = #944321 = (148, 67, 33)
and got c = #84361b = (132, 54, 27)
.
这让我有三个方程式要解决:
f(148) = 132
f(67) = 54
f(33) = 27
既然我们有三个方程式,那么 f(x)
应该是三种未知的多元方程式:
f(x) = Ax^2 + Bx + C
从那里,我在计算器上做了一个3x4矩阵,输入了x的不同值,并在矩阵上做了一个缩排层,解决办法是 < code>(0.001468, 0.647295, 4.04025) ,我在A、B和C中插入了这些代码,并获得了上述 < code>f(x) 。
这里有一个快速的 Python 脚本来进行计算 。
用法: ./patr.py rggbb
#!/usr/bin/env python
import sys
def end_color(color):
def f(x):
return int(round(0.001468 * x ** 2 + 0.647295 * x + 4.04025))
rgb = (int(color[i:i+2], 16) for i in xrange(0, 6, 2))
return .join(hex(f(n))[2:] for n in rgb)
for color in sys.argv[1:]:
print end_color(color)
我用颜色
$ ./script.py 9e3393
8f2983
即使它有时不准确, 也可能无法分辨, 因为您正在使用渐变末端的颜色。 希望有帮助!