1

如何在 Java 中找到像素的颜色名称?我找到了像素的 RGB 值,但不知道如何从像素中获取名称“黄色”。

4

3 回答 3

3

我还没有遇到让您这样做的 Java API 的一部分。这是您很可能需要自己实现的功能,尤其是因为并非所有 rgb 颜色组合都有名称。

您可以从使用 rgb 颜色值和网站(例如Wikipedia list of colours page )上给出的名称创建一个查找表开始。

但是,由于并非 rgb 值的每个组合都会映射到定义的颜色,因此您需要提出一种算法来将一组值映射到最接近的颜色。这可能类似于计算像素的 rgb 值与每个颜色名称的 rgb 值之间的均方误差。然后,您可以选择得分最低的颜色名称。

这是一个带有一些代码的要点(但请注意,它可能无法编译),它说明了计算均方误差以找到最接近的匹配颜色名称的 ColorNameLookup 类如何工作:https ://gist.github.com/nightlark/ 6482130

于 2013-09-08T04:48:09.913 回答
3

java中有一些标准颜色,其他的可以使用RGB或HSB构造函数生成。无法获取颜色名称,因为可能有许多 RGB 值组合 (256 x 256 x 256) 。只有少数组合有名称(标准颜色,如白色、红色、黄色、黑色等)

于 2013-09-08T04:48:33.553 回答
1

我敢肯定,您的问题存在基本问题。

如果您试图找出任何可能的 RGB 值组合的颜色名称,这将需要一个详尽的存储空间,您已经将所有可能的 RGB 值映射到一个唯一的颜色名称。

这意味着,在这张地图与您同在之前,您的问题无法 100% 正确回答。但是是的,您绝对可以找到类中定义的颜色的颜色名称java.awt.Color

因此,您还可以在 java 中使用反射来找出在 RGB 中定义的公共静态最终颜色属性列表,并且对于您拥有的每个 RGB 值,您可以在 javajava.awt.Color中声明的所有值之间进行比较。Color

于 2013-09-08T05:06:09.077 回答