我正在寻找一个简单的算法来生成大量的随机,美观的颜色。所以没有疯狂的霓虹灯颜色,让人联想到粪便的颜色,等等。
我已经找到了这个问题的解决方案,但它们依赖于替代调色板而不是RGB。我宁愿直接使用RGB,而不是来回映射。这些其他解决方案也最多只能生成32种左右令人愉悦的随机颜色。
任何想法都是很棒的。
发布于 2008-09-04 06:00:40
可以将随机颜色的RGB值与恒定颜色的RGB值平均:
(Java中的示例)
public Color generateRandomColor(Color mix) {
Random random = new Random();
int red = random.nextInt(256);
int green = random.nextInt(256);
int blue = random.nextInt(256);
// mix the color
if (mix != null) {
red = (red + mix.getRed()) / 2;
green = (green + mix.getGreen()) / 2;
blue = (blue + mix.getBlue()) / 2;
}
Color color = new Color(red, green, blue);
return color;
}
将随机颜色与白色(255、255、255)混合,可通过在保持原始颜色色调的同时增加亮度来创建中性粉彩。这些随机生成的粉笔通常很好地搭配在一起,特别是大量的粉笔。
以下是使用上述方法生成的一些柔和颜色:
您还可以将随机颜色与恒定的粉彩混合,这会产生一组有色的中性颜色。例如,使用浅蓝色可创建如下颜色:
更进一步,你可以在生成器中添加启发式算法,考虑到补色或阴影级别,但这完全取决于你想要用随机颜色实现的印象。
一些额外的资源:
发布于 2011-02-16 03:01:05
我会使用色轮,并给出一个随机的位置,你可以添加黄金角度(137度)
http://en.wikipedia.org/wiki/Golden_angle
以便每次都能得到不重叠的不同颜色。
调整色轮的亮度,你也可以得到不同的亮/暗颜色组合。
我找到了这篇博客文章,它很好地解释了这个问题,并使用黄金比例解决了这个问题。
http://martin.ankerl.com/2009/12/09/how-to-create-random-colors-programmatically/
更新:我刚刚找到了另一种方法:
它被称为RYB(红,黄,蓝)方法,本文对其进行了描述:
http://threekings.tk/mirror/ryb_TR.pdf
作为“绘画灵感色彩合成”。
该算法生成颜色,并选择每种新颜色以最大化其与先前选择的颜色的欧几里得距离。
你可以在这里找到一个很好的javascript实现:
http://afriggeri.github.com/RYB/
更新2:
科学博梅代尔刚刚发布了一个名为“我想要色调”的工具,它可以为数据科学家生成调色板。使用不同的颜色空间,使用k均值聚类或力矢量(排斥图)生成调色板,这些方法的结果非常好,它们在其网页中显示了理论和实现。
发布于 2012-09-04 23:05:24
在javascript中:
function pastelColors(){
var r = (Math.round(Math.random()* 127) + 127).toString(16);
var g = (Math.round(Math.random()* 127) + 127).toString(16);
var b = (Math.round(Math.random()* 127) + 127).toString(16);
return '#' + r + g + b;
}
我在这里看到了这个想法:http://blog.functionalfun.net/2008/07/random-pastel-colour-generator.html
https://stackoverflow.com/questions/43044
复制相似问题