java - 搜索当前颜色的和谐颜色

标签 java math colors formula

我有一个颜色:hex(#aeeb12) 或 rgb(174, 235, 18)。 我需要为这种颜色找到两种类似的颜色。 是否有任何数学公式可以以编程方式执行此操作? 这是图片:task

最佳答案

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

相似色是三色组:左一、主一、右一 在 HSB 表示中,我定义了主要的表示形式:[H, S, B]

  • H 色调是角度
  • S 饱和度在 0 和 1 之间 float
  • B 亮度/值在 0 和 1 之间 float

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

在 Java 中,如果您使用 java.awt.color API,则色调是 float 值(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]));

关于java - 搜索当前颜色的和谐颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51010372/

相关文章:

VBA .TopPadding 和点到英寸转换数学问题

jquery - 在图案中使用四种颜色的不同背景颜色

java - Android 设备与电脑屏幕之间的色差

java - 从 jSF 中的 ActionListener 重定向

c# - 在 C# 中实现 De Boor 样条算法

java - 如何阻止 JTextField 和 JTextLabel 在 JPanel 上截断

math - 矩阵表中的 YCbCr 到 RGB

java - 传递整数而不是资源颜色

java - 实体的流动性是什么意思?

java - Jaxb2Marshaller 如何保存 JAXBContext