【问题标题】:searching harmonious colors for current color为当前颜色寻找和谐的颜色
【发布时间】:2018-06-24 13:26:46
【问题描述】:

我有一个颜色:hex(#aeeb12) 或 rgb(174, 235, 18)。 我需要为这种颜色找到 2 种类似的颜色。 是否有任何数学公式可以以编程方式完成? 图片如下:

【问题讨论】:

  • 先定义“类比”。
  • @juzraai 和谐色彩
  • 编辑你的标题类似的颜色并不意味着
  • 你从哪里得到这个样本的?
  • 这个问题的意图还不错,但是如果我们确切地知道您尝试使用哪种编程语言来完成此任务,它会更有帮助。即使是您努力的代码 sn-p 也会对任何回答的人有用。如果没有人帮忙,您可以随时使用 Google。

标签: java math colors formula


【解决方案1】:

根据您在评论中提供的网站(sessions.edu/color-calculator) 您使用了类似的颜色模式:当您转换 rgb 颜色 HSB/HSV 表示时,类似颜色才有意义,我将您重定向到此站点以了解该系统表示颜色的方式http://colorizer.org/

类似的颜色是一个三元组:leftOne mainOne rightOne 在 HSB 表示中,我定义了这样的主要表示:[H, S, B]

  • H 色调是以度为单位的角度
  • S 饱和度在 0 和 1 之间浮动
  • B 亮度/值在 0 和 1 之间浮动

所以 leftOne 如果定义为:[H - 30, S, B] 而 rightOne 如果定义为:[H + 30, S, B]

在 Java 中,如果您使用 java.awt.color API,则色调是浮动值(介于 0 和 1 之间),因此只需将角度除以 360 ...

这里是如何在 Java 中获得这个结果的片段:

double anglerotation = 1d / 12; // 30 /360

Color mainColor = new Color(174, 235, 18);

float[] hsbLeftColor = Color.RGBtoHSB(mainColor.getRed(), mainColor.getGreen(), mainColor.getBlue(), null);
hsbLeftColor[0] -= anglerotation;
Color leftColor = new Color(Color.HSBtoRGB(hsbLeftColor[0], hsbLeftColor[1], hsbLeftColor[2]));

float[] hsbRightColor = Color.RGBtoHSB(mainColor.getRed(), mainColor.getGreen(), mainColor.getBlue(), null);
hsbRightColor[0] += anglerotation;
Color rightColor = new Color(Color.HSBtoRGB(hsbRightColor[0], hsbRightColor[1], hsbRightColor[2]));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 2011-05-09
    • 2016-03-25
    • 2015-05-18
    相关资源
    最近更新 更多