生成色谱调色板

2022-09-03 18:24:10

有没有一种简单的方法可以在Java中的颜色模型(RGB,HSV和Lab)之间进行转换。

假设 RGB 颜色模型:

  • 如何计算黑体光谱调色板?我想将其用于热图图表。
  • 单波长光谱怎么样?

编辑:我发现ColorSpace类可用于RGB / CIE和许多其他颜色模型之间的转换。


答案 1

Java具有内置的RGB到HSB的转换。每当我需要Java中的快速颜色托盘时,我都会这样做:

public Color[] generateColors(int n)
{
    Color[] cols = new Color[n];
    for(int i = 0; i < n; i++)
    {
        cols[i] = Color.getHSBColor((float) i / (float) n, 0.85f, 1.0f);
    }
    return cols;
}

这是一个快速而肮脏的黑客(我会调整你的应用程序的“神奇”数字),但对于我的简单用途,它会生成一个漂亮明亮的托盘。


答案 2

也许我不理解你的问题,但你不能真正从RGB输出设备生成真正的黑体频谱。如果没有别的,有限的色域将是一个问题。如果你想要的只是视觉上类似于黑体光谱的东西,那可能要容易得多。

作为近似值,从 (R,G,B) (0,0,0) 到 (255,0,0),然后到 (255,255,0), 再到 (255,255,255) 的斜率。这会让你变成暗红色到橙色,到黄色,再到白色过渡。

如果你想要更科学的东西,维基百科上关于黑体辐射的文章有一些颜色与温度的图。一旦你弄清楚了CIE坐标,你就可以在你喜欢的颜色空间中将它们转换为RGB。

编辑:找到一些其他在线参考:太阳是什么颜色?什么是黑体?