我知道如何獲得使用十六進制值的預定義顏色的名稱,但如何獲得顏色的名稱,而近似其十六進制值是最接近的已知顏色。通過十六進制值獲取顏色的名稱?
7
A
回答
2
https://stackoverflow.com/a/7792104/224370解釋瞭如何將指定的顏色與精確的RGB值進行匹配。爲了使其近似,需要某種距離函數來計算顏色的距離。在RGB空間(R,G和B值差異的平方和)做這件事不會給你一個完美的答案(但可能足夠好)。有關這樣做的示例,請參見https://stackoverflow.com/a/7792111/224370。要獲得更準確的答案,您可能需要轉換爲HSL,然後進行比較。
5
下面是一些基於伊恩建議的代碼。我測試了一些顏色值,似乎運作良好。
GetApproximateColorName(ColorTranslator.FromHtml(source))
private static readonly IEnumerable<PropertyInfo> _colorProperties =
typeof(Color)
.GetProperties(BindingFlags.Public | BindingFlags.Static)
.Where(p => p.PropertyType == typeof (Color));
static string GetApproximateColorName(Color color)
{
int minDistance = int.MaxValue;
string minColor = Color.Black.Name;
foreach (var colorProperty in _colorProperties)
{
var colorPropertyValue = (Color)colorProperty.GetValue(null, null);
if (colorPropertyValue.R == color.R
&& colorPropertyValue.G == color.G
&& colorPropertyValue.B == color.B)
{
return colorPropertyValue.Name;
}
int distance = Math.Abs(colorPropertyValue.R - color.R) +
Math.Abs(colorPropertyValue.G - color.G) +
Math.Abs(colorPropertyValue.B - color.B);
if (distance < minDistance)
{
minDistance = distance;
minColor = colorPropertyValue.Name;
}
}
return minColor;
}
相關問題
- 1. 通過十六進制或RGB獲取顏色名稱
- 2. 將十六進制顏色代碼轉換爲顏色名稱
- 3. 從十六進制顏色代碼中找到顏色名稱
- 4. 如何將十六進制值轉換爲顏色名稱
- 5. 將十六進制顏色值轉換爲近似顏色名稱的函數?
- 6. 轉換顏色的十六進制值
- 7. 過濾器十六進制顏色
- 8. 如何從java中的十六進制代碼獲取顏色的名稱?
- 9. 顏色名稱爲RGB /十六進制/ HSL/HSV等
- 10. xsl檢查顏色是否是名稱或十六進制
- 11. 在C#中將顏色名稱轉換爲十六進制
- 12. 的ASP.NET獲取十六進制顏色日曆
- 13. 以十六進制格式獲取畫布的背景顏色
- 14. 建議在CSS中輸入顏色的名稱而不是十六進制值?
- 15. 如何從android中的getColorFilter獲取顏色的十六進制值或rgb值
- 16. 十六進制顏色代碼瓶通配符過濾器
- 17. 獲取不同的十六進制值
- 18. 獲取兩種顏色之間所有顏色的十六進制代碼?
- 19. 解析十六進制'0x0976b8'顏色android
- 20. 顏色十六進制到imagefilledrectangle
- 21. rbg或十六進制選擇顏色?
- 22. 十六進制網頁顏色
- 23. R/Dygraphs十六進制顏色代碼
- 24. 顏色十六進制計算
- 25. 如何從十六進制顏色中獲取顏色字符串
- 26. 如何通過在Firefox(jQuery)上保留背景顏色的十六進制值
- 27. 用十六進制顏色尋找最近的PMS顏色?
- 28. 在JS中生成隨機生成的十六進制顏色的免費十六進制顏色?
- 29. 將浮點值轉換爲灰度十六進制顏色值
- 30. 轉換UINT顏色ARGB十六進制顏色KML
Thankyou so muh Kartan ... :) – fresky 2012-07-31 21:10:54