gpt4 book ai didi

javascript - 如何在java中为颜色设置范围?

转载 作者:行者123 更新时间:2023-12-02 11:47:03 25 4
gpt4 key购买 nike

我想输入一个 6 位数字(RGB 十六进制),然后单击按钮以显示颜色的名称。我没有在java中找到颜色库来给我任意颜色的名称。

所以我所做的是:我在 javascript this is the ntc js lib 中找到了这个库并尝试在 java 中重新实现它,因此我定义了一个 HashMap 并将每个值与名称一起放置,例如:

sColorNameMap.put("B43332", "读得好");

当给定与我放入 HashMap 中的相同键时,代码运行正常,例如,当我写入值 B43332 时,我会得到 Well Read 作为颜色名称。

我的问题:当我输入的值不等于我按下的键时,我无法获取颜色名称。

我需要什么:我需要一个函数来返回最接近匹配颜色的名称。我试图理解 ntc 是如何做到的,但我做不到。

例如,值 B23634 未在 ntc js lib 中预定义,但它解析为名称 Well Read ,如下所示图片 : here I enter number not predifined and the number close to the closet color name 因此,任何有助于实现返回某种颜色最接近值(6 位数字)的函数的帮助都是值得赞赏的。

最佳答案

如果您认为最接近的匹配颜色是 3 维 RGB 空间中最接近的颜色,则可以使用如下内容:

(查看this以获取有关如何计算该距离的信息)

public static void main(String[] args) {

Map<String, String> sColorNameMap = new HashMap<>();

String rgbCode = "B23634";

String colorName;
if (sColorNameMap.containsKey(rgbCode)) {
colorName = sColorNameMap.get(rgbCode);
} else {
colorName = nearestColor(rgbCode, sColorNameMap);
}

System.out.println("colorName = " + colorName);

}

private static String nearestColor(String code, Map<String, String> sColorNameMap) {

int[] rgb = getRgb(code);

double nearestDistance = Double.MAX_VALUE;
String nearestNamedColorCode = null;

for (String namedColorCode : sColorNameMap.keySet()) {
int[] namedColorRgb = getRgb(namedColorCode);
double distance = calculateDistance(rgb, namedColorRgb);
if (distance < nearestDistance) {
nearestDistance = distance;
nearestNamedColorCode = namedColorCode;
}
}

return sColorNameMap.get(nearestNamedColorCode);

}

private static int[] getRgb(String code) {

int r = Integer.parseInt(code.substring(0, 2), 16);
int g = Integer.parseInt(code.substring(2, 4), 16);
int b = Integer.parseInt(code.substring(4, 6), 16);

return new int[]{r, g, b};

}

private static double calculateDistance(int[] rgb1, int[] rgb2) {

double sum = 0.0;
for (int i = 0; i < 3; i++) {
sum += Math.pow(rgb2[i] - rgb1[i], 2);
}
return Math.sqrt(sum);

}

如果您有一些其他最接近匹配颜色的指标,只需更改 calculateDistance() 方法中的实现即可。

关于javascript - 如何在java中为颜色设置范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48127353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com