为用户生成不同的颜色(日历中的颜色日期)

时间:2013-08-15 23:12:41

标签: php colors calendar generator

我只有一个日历和许多在该日历中创建活动的用户。每个用户都应具有唯一的颜色作为他创建的所有事件的背景。

用户无限,但无论如何不到ffffff(16777215)用户。所以我只需要一种算法,为每个添加到日历中的用户创建一种独特的颜色。日历的用户越少,颜色就越不同;例如4个用户的红色,绿色,蓝色,黄色,但对于50个用户来说,颜色当然会变得更加接近。

1 个答案:

答案 0 :(得分:1)

从技术上讲,你不能使用所有颜色,这些颜色的大范围会与你的设计发生冲突,更糟糕的是,另一个大范围会使文字难以阅读,除非你还应用算法来着色每个单元格中的文本以确保更高的对比度此外,您需要在不同颜色之间存在相当大的差异,以使它们与众不同。总的来说,对于那些看起来不太好或者效果不好的东西来说似乎太费力了。

我建议改为为每个用户提供一个随机生成的图标,并在其事件的左侧显示该图标。查看Stack Overflow的图标?他们使用Gravatar。 Gravatar根据用户电子邮件提供了几种形式的随机生成的图标,用户也可以自由创建Gravatar帐户并上传自己的图标。我会强烈考虑这样做。你可以在不到5分钟的时间内完成它并完成它。

那就是说,如果你坚持尝试它,我认为最好的方法是拿出一个公式,该公式采用自动递增的用户ID并自动分割频谱,尽可能广泛地分配颜色选择允许的光谱重复一半。这样,前50个用户的颜色变化最大,您可以随时预测每个用户的颜色,否则会非常随机。

关于为高对比度着色文本的算法,这是另一回事。我相信谷歌会取得一些好成绩。一种简单的方法是设置一个颜色被认为是浅色或深色的阈值,然后只测试颜色 - 如果它是浅色使用黑色字体,如果它是暗的使用白色字体。阴影也有助于提高易读性。