我有Collection of Integers
处理颜色(它包含重新缩放为1x1以获得“平均”颜色的图像颜色)。我有这个东西,必须检索我最接近数组的颜色:
public static int getNearestColor(Collection<Integer> colors, int color) {
return colors.stream()
.min(Comparator.comparingInt(i -> Math.abs(i - color)))
.orElseThrow(() -> new NoSuchElementException("No value present"));
}
但是,当我这样做时,它返回的颜色比输入的颜色更远[[远]],但是数组包含的颜色比输入的颜色更接近,this是我的问题,我不知道不明白吗?
我有一个处理颜色整数集合(它包含重新缩放为1x1以获得“平均”颜色的图像颜色)。我有这个东西必须检索我最接近数组的颜色:...dist()
。 c1
除了自然顺序外,没有其他方法可以进行比较。您可以先映射到差异(c2
),但是现在您已删除了要查找的信息(原始颜色),因此也将不起作用。装箱吧。这将导致以下代码,该代码与您的代码完全一样,只不过此代码可以编译和运行。然后,我还将添加一个测试用例,使其成为一个独立的示例:float ColorDistance(int c1, int c2) {
return PVector.dist(
new PVector(red(c1), green(c1), blue(c1)),
new PVector(red(c2), green(c2), blue(c2)));
}