私は16進値を使って定義済みの色の名前を取得する方法を知っていますが、色の名前を取得する方法は、そのHex値を最も近い既知の色に近づけます。16進値で色の名前を取得していますか?
7
A
答えて
2
https://stackoverflow.com/a/7792104/224370は、名前付きカラーと正確なRGB値のマッチング方法を説明しています。近似するには、色の距離を計算する距離関数が必要です。これをRGB空間(R、G、B値の差の平方和の合計)で行うと、完璧な答えは得られませんが、十分に良いかもしれません。このようにしている例については、https://stackoverflow.com/a/7792111/224370を参照してください。より正確な回答を得るには、HSLに変換して比較する必要があります。
5
ここには、Ianの提案に基づくコードがあります。私は色の値の数でそれをテストし、うまくいくようです。
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. 16進数に応じて最も近い色の名前を取得
- 2. Javaの16進コードから色の名前を取得するには?
- 3. 特定の色の16進コードの暗い色の16進コードを取得
- 4. 別の16進値を取得する
- 5. XAMLコードビハインドでボタンの背景色を16進数で取得する方法は? ...名前をXAMLマークアップで:
- 6. キャンバスの背景色を16進形式で取得する
- 7. 16進ダンプの16進値は何に対応していますか?
- 8. ピクセルからの色の取得とカラーコードの返信(16進数)
- 9. 16進数のビューの背景色を取得
- 10. androidのgetColorFilterから色の16進値またはrgb値を取得する方法
- 11. 現在の16進コードの色をUIViewからプログラムで取得する方法
- 12. 分度器で要素の色の16進数値を取得する方法はありますか?
- 13. すべての色の16進値を生成するコード
- 14. HSLから色の名前を取得
- 15. 16進値を含むLPTSTRまたはCHAR *のサイズの取得
- 16. xsl色が名前または16進数かどうかを確認します。
- 17. ASCII文字列のバイトの16進(16進)レンダリングを使用して文字列を取得します。
- 18. ビットマップのすべての16進色のリストを取得するにはどうすればよいですか?
- 19. 私のUWPアプリケーションで16進値で色を使用する
- 20. 16進色で最も近いPMS色を見つけるか?
- 21. 16進数への16進値
- 22. 私のウェブページで色の16進法コードを取得する方法
- 23. javascriptを使用して16進値のリストから最も明るい色を得る方法
- 24. ダブルバイト16進値
- 25. Javaの.txtのすべての16進値を取得する方法
- 26. JSColorでは、どのように色の16進数を取得できますか?
- 27. ラベルのBackColorをデータベースの16進数の色値にバインドします
- 28. スケールに基づいて16進数で色を薄くします
- 29. 名前を変更するための16進数の編集?
- 30. Firefox(jQuery)の背景色の16進値のままで渡す方法
ありがとうございます。 – fresky