如何从调色板中制作颜色渐变

时间:2011-05-05 16:30:43

标签: python algorithm fractals mandelbrot color-palette

我正在研究的这个算法的目标是从一些提供的颜色输出颜色进展。通过颜色进展,我的意思是在两种颜色(颜色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 Set,如果你想要谷歌它),所以重要的是让进展尽可能柔软,没有打嗝。

提前致谢。

4 个答案:

答案 0 :(得分:2)

将您的RGB坐标转换为HSL或HSV并逐步执行它们,并在此过程中转换回RGB。

答案 1 :(得分:0)

我只是单独插入RGB值。请参阅此thread

答案 2 :(得分:0)

我对标题为Range values to pseudocolor的SO问题的回答可能对您有所帮助,因为它显示了一种生成特定颜色渐变的方法(您称之为颜色渐变的常用名称)。

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

然后,从每个第一颜色分量的值开始,可以相应地将相应的分数量添加到其中以确定每个中间步骤颜色。或者,可以通过将(step_number/total_steps) * fractional_delta添加到起始颜色的初始颜色分量值来减少该方法中固有的算术误差。

我相信@Jim Clay在回答中也是这样说的。如果你想要一些示例代码,请在评论中说明。

答案 3 :(得分:0)

我推荐与Jim Clay相同的问题,但请阅读the top。或参见Wikipedia关于interpolation

相关问题