我正在尋找按「顏色距離」對列表進行排序。我使用下面的函數來計算兩個顏色之間的距離:按顏色排序列表(Java)
double colorDistance(Color c1, Color c2) {
double rmean = (c1.getRed() + c2.getRed())/2;
int r = c1.getRed() - c2.getRed();
int g = c1.getGreen() - c2.getGreen();
int b = c1.getBlue() - c2.getBlue();
double weightR = 2 + rmean/256;
double weightG = 4.0;
double weightB = 2 + (255 - rmean)/256;
return Math.sqrt(weightR * r * r + weightG * g * g + weightB * b * b);
}
所以,你可以看到,我使用的是RGB值來計算兩種顏色之間的「距離」。這個函數非常適合我需要計算的東西,因爲我不需要精確的精度。問題是,我需要能夠說明,不僅是距離,而且c1是在c2之前還是之後,以便我可以根據色彩距離創建一個排序列表。
如果不夠清楚,一個例子可能會有所幫助。純黑和純白之間的顏色距離將在256附近。在當前狀態下,對於colorDistance(黑色,白色)和colorDistance(白色,黑色),此函數將返回相同的〜256。我怎麼能使它colorDistance(黑色,白色)返回256和colorDistance(白色,黑色)返回-256?
我不反對使用HSV/HSL如果這是一個選項,但我更熟悉RGB。如果可以提供用於計算HSV/HSL的正面或負面色彩距離的功能,請將其啓用!
甚至更好,另一個簡單的功能,將採取兩種顏色,並簡單地決定是否c1之前或之後c2!
好的表演,我會試試看。 – Marty 2012-07-12 17:26:26
做過漂亮的朋友。謝謝您的幫助! – Marty 2012-07-12 17:40:34