如何从调色板中进行颜色渐变

Posted

技术标签:

【中文标题】如何从调色板中进行颜色渐变【英文标题】:How to make a color progression out of a color palette 【发布时间】:2011-08-19 13:23:21 【问题描述】:

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

提前致谢。

【问题讨论】:

【参考方案1】:

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

【讨论】:

docs.python.org/library/colorsys.htmlen.wikipedia.org/wiki/HSL_and_HSV 我有问题。我不知道如何在 HSL 和 HSV 颜色之间切换:/ 如何在 RGB 颜色之间切换? 我知道我无法单步执行 RGB,但您能告诉我如何单步执行 HSV 或 HSL 吗?谢谢【参考方案2】:

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

【讨论】:

【参考方案3】:

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

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

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

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

【讨论】:

以上是关于如何从调色板中进行颜色渐变的主要内容,如果未能解决你的问题,请参考以下文章

将 `shap.summary_plot()` 的渐变颜色更改为特定的 2 或 3 RGB 渐变调色板颜色

ECharts的高级使用(主题调色板颜色渐变)

echarts-颜色渐变

echarts学习 高级使用

从线性渐变颜色值获取背景颜色

iOS 绘制颜色渐变圆环