Sé cómo obtener el nombre de los colores predefinidos utilizando el valor hexadecimal, pero cómo obtener el nombre del color al aproximar su valor hexadecimal al color conocido más cercano.Obteniendo el nombre de color a través de Hex Value?
7
A
Respuesta
2
https://stackoverflow.com/a/7792104/224370 explica cómo hacer coincidir un color con nombre con un valor RGB exacto. Para que sea aproximado, necesita algún tipo de función de distancia en la que calcule qué tan separados están los colores. Hacer esto en el espacio RGB (suma de cuadrados de diferencias en los valores R, G y B) no le dará una respuesta perfecta (pero puede ser lo suficientemente bueno). Vea https://stackoverflow.com/a/7792111/224370 para un ejemplo que lo haga de esa manera. Para obtener una respuesta más precisa, es posible que deba convertir a HSL y luego comparar.
5
Aquí hay un código basado en la sugerencia de Ian. Lo probé en una serie de valores de color, parece funcionar bien.
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;
}
Cuestiones relacionadas
- 1. Convertir System.Drawing.Color a RGB y Hex Value
- 2. Hex-Value en Visual Basic
- 3. Obtener nombre de color por HEX o RGB
- 4. Convertir de HEX color a estructura RGB en C
- 5. Cómo convertir códigos de color HEX RGB a UIColor?
- 6. Cómo convertir Hex a RGB?
- 7. Sass/Compass - Convierta Hex, RGB o color con nombre a RGBA
- 8. ¿Cómo enviar valores Hex a través de Bluetooth en Android
- 9. Convertir RBG a HEX
- 10. C# Conversión delphi TColor al color (Hex)
- 11. Obteniendo el nombre mangled del nombre demandado
- 12. Obteniendo el nombre de la ventana activa
- 13. Cómo convertir el valor de BigInteger a Hex en Java
- 14. obteniendo un nombre de mensaje de Windows
- 15. Convierte HEX al número de color X11 más cercano
- 16. obteniendo el nombre completo de un ensamblaje
- 17. ¿Generar hex de color aleatorio en Objective-C?
- 18. Convertir hex a flotante
- 19. NSString (hex) a bytes
- 20. obteniendo color de píxel con Magick ++
- 21. ¿Cómo obtener el nombre de dominio a través de JavaScript?
- 22. DataReader.GetString() a través del nombre de columna
- 23. obteniendo la fila seleccionada a través de AbstractTableModel
- 24. Django "agrupar por" a través de anotaciones: Obtener objeto de .value() frente a un ID
- 25. Obteniendo el color más común de una imagen
- 26. Establecer el color a través del código de color en C#
- 27. obteniendo conexión db a través de la clase singleton
- 28. Java obteniendo el nombre Enum dado el valor Enum
- 29. Obteniendo el nombre de una DLL desde el dll
- 30. Obteniendo el número de filas insertadas en IBM DB2 V6R1 (AS400) a través de JBDC
Thankyou so muh Kartan ... :) – fresky