如何对HSV颜色的ArrayList进行排序

时间:2018-09-21 19:08:50

标签: android sorting colors gradient hsv

我正在做一个Android启动器应用程序,该应用程序提取每个应用程序图标的平均颜色。

这个想法是按照HSV中的颜色对应用程序进行排序,并使应用程序具有漂亮的渐变效果。

首先,我提取平均rgb。然后,我将rgb转换为HSV,并在HUE比例(0到360)之间进行比较。

问题是颜色顺序在视觉上不令人满意。 我认为那是因为排序仅适用于HUE维度。我的意思是,排序工作正常,但可能是具有完全亮度的“红色”,因此对我们来说是“白色”。

我尝试过按色相,饱和度和值排序。结果相同。已订购的应用颜色列表看起来似乎无序。

稍后,我在比较方法中编写了很多if语句,但排除了其饱和度/亮度大于或小于..等的应用程序。

现在,我得到了一些改善,但还不是很清楚:

Launcher color app gradient 1

(应用程序图标的平均颜色以backgorund颜色表示)

然后我再添加更多的if语句。但是出现了同样的问题:

TOP Apps (Fine)

BOTTOM Apps (Disaster)这些是ifs语句排除并随后在另一个列表中排序的应用。最后,我使用.addAll()将“灾难”应用列表追加到底部。

我正在做这样的事情:

Image

我发现了这个问题(上面的图片来自那里),但我不知道这对我的特殊情况是否有用 How to sort colors in two dimensions?

我尝试了查找并实现了诸如欧洲距离,行销员问题和kdtree之类的方法...但是我不知道这是否是正确的方法,而且我不知道如何使用它来对列表进行排序颜色。 我还尝试搜索用于分类颜色的java库,但没有找到任何库。

非常感谢您的宝贵时间。

0 个答案:

没有答案