6

我正在研究的这个算法的目标是从一些提供的颜色中输出颜色进展。通过颜色进展,我的意思是在两种颜色(颜色 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 每步增加 1 次,共 255 次)。但是如果我想用两种任意颜色来做这个过程,比如 A = (180,69,1) 和 B = (233,153,0)?

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

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

我需要弄清楚这个算法,以便我可以在我的分形生成器中使用它(Mandelbrot Set,如果你愿意,可以在谷歌上搜索它),所以让进程尽可能柔和,没有打嗝很重要。

提前致谢。

4

3 回答 3

2

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

于 2011-05-05T16:44:33.157 回答
0

我只是独立地插入 RGB 值。看到这个线程

于 2011-05-05T17:18:02.727 回答
0

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

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

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

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

于 2012-06-14T22:28:13.520 回答