我正在使用此算法的目标是从提供的某些颜色中输出颜色渐变。颜色渐进是指在两种颜色(颜色A,颜色B)之间创建“淡入淡出”效果,并在它们之间存储每个颜色值((R,G,B)元组)。

例如,如果提供的是总的黑色A = (0,0,0)和总的白色B = (255,255,255),则结果将是:

P = ((0,0,0),(1,1,1),(2,2,2), .... ,(253,253,253),(254,254,254),(255,255,255)

这样我们一开始会变成白色,然后逐渐变成黑色。当然,使用白色和黑色非常容易(只需将RGB每步增加255次即可)。但是,如果我想使用两种任意颜色来执行此过程,例如A=(180,69,1)和B=(233,153,0),该怎么办?

重要说明:如果使用十六进制(或任何其他类型的颜色表示法)更容易实现,那么我也可以使用它,只需指定哪种类型即可(考虑到我正在使用PIL(Python图像库),所以如果可以的话,我很好)

显然,它必须是尽可能均匀的分布,其进展必须是均匀的。

我需要弄清楚这个算法,以便可以在我的分形生成器中使用它(Mandelbrot集,如果需要,可以在google上搜索它),因此,使进程尽可能柔和,无打h是很重要的。

提前谢谢。

有帮助吗?

解决方案

将RGB坐标转换为HSL或HSV并逐步执行,然后再转换回RGB。

其他提示

我只是独立地插值RGB值。参见此线程

我推荐与吉姆·克莱(Jim Clay)相同的问题,但请阅读顶部。或参阅Wikipedia有关插值

我对题为将范围值更改为伪色的问题的答案可能对您有所帮助,因为它显示了一种生成特定颜色渐变(称为色阶的通用名称)的方法。

通常,您可以通过计算每种颜色的成分之间的差异或增量值,在任何颜色空间中的任意两种颜色之间进行插值,然后将其除以所需的中间步骤数,以获得每个成分的分数增量量为在每个步骤之后申请。

然后,从第一种颜色的每种成分的值开始,可以一遍又一遍地向其添加相应的分数,以确定每种中间步骤的颜色。另外,可以通过在原始颜色的初始颜色成分值中添加(step_number/total_steps) * fractional_delta来减少该方法固有的算术误差。

我相信这就是@Jim Clay在回答中所说的。如果您需要一些示例代码,请在注释中注明。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top