相关疑难解决方法(0)

将RGB三元组列表排序为频谱

我有一个RGB三元组列表,我想以这样的方式绘制它们,使它们形成像光谱一样的东西.

我把它们转换成了人们似乎推荐的HSV.

from PIL import Image, ImageDraw
import colorsys

def make_rainbow_rgb(colors, width, height):
    """colors is an array of RGB tuples, with values between 0 and 255"""

    img = Image.new("RGBA", (width, height))
    canvas = ImageDraw.Draw(img)

    def hsl(x):
        to_float = lambda x : x / 255.0
        (r, g, b) = map(to_float, x)
        h, s, l = colorsys.rgb_to_hsv(r,g,b)
        h = h if 0 < h else 1 # 0 -> 1
        return h, s, l

    rainbow = sorted(colors, key=hsl)

    dx = width / …
Run Code Online (Sandbox Code Playgroud)

python hsv spectrum color-space python-imaging-library

16
推荐指数
2
解决办法
6437
查看次数

C# - 如何按彩虹顺序排列颜色列表?

我使用与此类似的方法从图像列表中计算了平均颜色。我现在有一个列表System.Drawing.Color,但我不知道如何以看起来像彩虹的方式对它们进行排序。

这是我尝试过的简单方法(出于示例目的略有改变):

var colorList = new List<Color>
{
    Color.Red,
    Color.Purple,
    Color.Black,
    Color.Blue,
    Color.Green,
    Color.LightGreen,
    Color.LightSkyBlue,
    Color.Yellow
};

var orderedColorList =
    colorList.OrderBy(o => (o.R * 3 + o.G * 2 + o.B * 1));
Run Code Online (Sandbox Code Playgroud)

这似乎并没有创造出彩虹,而更多的是从黑到白的效果。

我怎样才能以形成彩虹的方式对它们进行排序?

c# gradient colors

3
推荐指数
1
解决办法
1609
查看次数