如何产生与Google的材料设计相似的调色板?


62

Google的材料设计规范包含以下几种调色板

在此处输入图片说明

从指定为“ 500”的基本原色开始,然后按一系列渐增的明暗,深色和深色步进,以创建约10种颜色。最亮的表示为“ 50”,接近白色,最暗的表示为“ 900”,接近黑色,但是两者都保留了一些基色。

我无法完全确定增量的计算方式。我尝试了此在线色板生成器,但似乎无法拨入范围。

我认为这只是在基础“ 500”颜色上下调整亮度的问题,我猜“ 0”的值将是纯白色,“ 1000”的值将是纯黑色,但是Google的范围是调色板似乎比简单的亮度范围具有更高的饱和度。

有谁知道我可以使用哪种算法或处理程序来获取基本颜色并生成与Google调色板一致的调色板?


它们似乎是基色,饱和度和值分别随着数字的增加或减少而反比增加或减少
Supuhstar 2014年

1
实际上,从屏幕上退后一步,它似乎使用了与phong着色类似的算法...我必须考虑一下
Supuhstar 2014年

您是否找到任何生成调色板的解决方案?
MrBrightside 2014年

@MrBrightside你好!您可以使用选定的答案在这里生成调色板:mcg.mbitson.com-请注意,尽管您可以导入确切的调色板或生成具有自定义颜色的近似表示,但颜色与Material Design调色板并不完全相同。更多关于他们为什么不在这里确切的颜色:stackoverflow.com/questions/32942503/...
米克尔Bitson

1
材料仅适用于50-500范围的单色,请参见codepen.io/sebilasse/pen/GQYKJd?editors=1010以获取更深色和强调色…
sebilasse

Answers:


41

我为项目生成了这个CSS3 / AngularJS小工具,以生成“材质颜色”调色板。您可以输入500种十六进制颜色,并使用外部工具(例如ColorZilla)从那里获取颜色值。同样,浅色的正是Google所用的,而深色的稍微有些偏离。

mcg.mbitson.com


您的调色板生成器运行得非常好,据我所知,它近似于Google Material Design标准。一件事:您可能想为页面上的文本创建更多的对比度。深灰色背景上的黑色文字很难阅读。
提问者

2
大家好!我是该工具更新版本的开发人员。最近,我正在改变处理颜色生成的方式。如果有人对此工具有任何直接反馈-它是色彩生成技术或他们想要的任何其他功能,请告诉我!我仍在业余时间开发增强功能,我担心色彩生成可能会消失,尽管仍然很有帮助。我会继续研究。
Mikel Bitson

1
@MikelBitson调色板生成器确实处于关闭状态(只需输入材料设计标准中的任意500种颜色并进行比较即可),但是它仍然可以与许多其他基色一起使用。继续努力!
克里斯·伯恩霍夫

1
@MikelBitson很棒的解释,谢谢。在发布我的原始评论之前,我就想像是这样。我想知道Google的“官方拾色器”能赚多少钱?什么标题:)
克里斯·博恩霍夫

1
针对正在寻找新版本的用户的更新的链接:mcg.mbitson.com/#
Mikel Bitson,2016年

18

谷歌调色板是单色的。保持相同的RGB比率可向上或向下移动亮度和饱和度。为此,您必须将RGB值转换为HSL表示形式(色相,饱和度,亮度),更改亮度和饱和度,然后根据需要转换回去。可以在计算时将其保留在RGB空间中,但是数学太混乱了(我无法理解或解释)。HSL是为传统混色创建的(它让我们更容易考虑)。

如果您的目标是制作CSS调色板,则可以使用将该颜色保留在HSL中background-color: hsl(0,100%, 50%);

您可以使用颜色选择器在Photoshop中手动执行此操作。HSB用于色相饱和度亮度(与HSL同义)。选择您喜欢的色调,并以一致的值更改“饱和度”和“亮度”。在下面的图像S = 54和B = 77中,使用54 + 54 * 0.05和向上移动5%77 + 77 * 0.05。或下移S - S * 0.05

Photoshop拾色器

旁注,以说明十六进制和RGB。6位十六进制#FFEB3B实际上是3个独立的数字,表示RGB。

#FFEB3B -> FF,EB,3B -> red:FF green:EB blue:3B将十六进制值转换为十进制给您red:255 green:235 blue:59 OR rgb(255,235,59)

如果您确实希望在Wikipedia上将RGB转换为HSL的算法,则最简单的方法是使用颜色库。这个示例使用please.js制作了一个单色调色板,它还具有其他算法来创建互补或令人愉悦的调色板。很像kuler.adobe,也很摇滚。

Please.make_scheme(
    Please.HEX_to_HSV('#ffeb3b'),
    {scheme_type: 'mono', format:'hex'}
);
// returns ->["#ffeb3b", "#ffe821", "#ffe508", "#e5d54c"]

4
Google自己的调色板无法在HSV / HSB上显示稳定的亮度梯度。我创建了一个插图,以便您可以看到我在说什么。基于此,最好使用其他颜色模型之一。此外,他们似乎已经对某些颜色的深色调进行了一些微调,以防止它们变得浑浊。
苔丝

我想在这里加上一点@Tess的回复。.我已经开发了MCG生成器的增强版本,并且在此过程中我注意到了一些事情。每个Google调色板都遵循不同的颜色顺序,它不是单色的。没有任何公式或方法可以精确地模拟颜色,因为每个调色板的公式最终都完全不同。可以在这里找到更多详细信息和示例:github.com/mbitson/mcg/issues/19
Mikel Bitson

@MikelBitson但在回答这个问题:“我可以用什么算法或过程:”我会投票支持单色或它的一个版本en.wikipedia.org/wiki/Monochromatic_color但是你和苔丝是正确的它不是严格的单,他们偏离色调。
Lex 2015年

1
@Lex-我同意你的看法,我会使用单色来估计调色板。我只支持Tess的回答,因为您的回答是“ Google调色板是单色的”。最近我花了很多时间在这些颜色上挣扎。:)
Mikel Bitson

1
HSB / HSV是不一样的HSL en.wikipedia.org/wiki/HSL_and_HSV
凯文Thibedeau

1

您是否尝试过使用Adobe的色轮?我认为它比您使用的SlayerOffice工具更加灵活。

https://color.adobe.com/

对于您的确切情况,请选择“阴影”并尝试从那里鬼混。它不会像色板那样产生材质设计,但这是一个开始。



0

要从给定的颜色生成颜色渐变/调色板,基本上可以使用以下算法。

  1. 确定调色板中所需的最小和最大阴影
  2. 将这些颜色之间的“颜色空间”划分为相等的分区(请参见下文)
  3. 在这些步骤上输出颜色

为了在它们之间划分颜色空间,首先可以将HEX的颜色转换为RGB。在每个通道中选择值。假设您有color1(r1,g1,b1)和color2(r2,g2,b2)。而你要在3个色颜色1颜色2,那么你可以这样做以下

all_colors = []
steps = no_of_colors + 1
rdelta, gdelta, bdelta = (r2 - r1) / steps, (g2 - g1) / steps, (b2 - b1) / steps
for step in range(steps - 1):
    r1 += rdelta
        g1 += gdelta
        b1 += bdelta
all_colors.append((r1, g1, b1)) 

记住要在(0到1)之间转换RGB值。

在您的情况下,您可以采用基色并在white to basecolor和之间划分色彩空间basecolor to black。您可以根据需要调整步骤。

最后,我将对我创建的python库进行一些无耻的宣传,因为它与有关调色板生成的问题有关。它称为SecretColors。您可以生成自己的调色板,渐变色,也可以使用标准调色板,例如IBM,Material Design,ColorBrewer或Clarity。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.