Esto se relaciona con códigos de color CSS:¿Cómo manejan los navegadores rgb (porcentaje) los navegadores? para los números extraños
Para hexcode podemos representar 16.777.216 colores de # 000000 a #ffffff
Según W3C especificaciones, porcentajes RGB válidos encajan en un rango de (0,0% hasta 100.0%) esencialmente dándole 1,003,003,001 combinaciones de colores. (1001^3)
De acuerdo con las especificaciones:
Los valores fuera de la gama del dispositivo debe ser cortado o asignada a la gama cuando la gama es conocida: los valores de rojo, verde y azul deben estar cambiado para estar dentro del rango admitido por del dispositivo. Los agentes de usuarios pueden realizar un mapeo de colores de mayor calidad desde una gama hasta . Para un monitor CRT típico, cuya gama del dispositivo es la misma que sRGB, las cuatro reglas a continuación son equivalentes:
estoy dudoso que los navegadores pueden hacer realidad todos estos valores. (pero si lo hacen por favor díganme e ignoren el resto de esta publicación)
Supongo que hay un mapeo de rgb (porcentaje) a hexadecimal. (Pero de nuevo no estoy muy seguro de cómo funciona esto)
Idealmente me gustaría averiguar la función RGB (porcentaje) -> HEX
Si tuviera que adivinar, probablemente sería uno de éstos 3.
1) Ronda al hexágono más cercano
2) CEIL al hexágono más cercano
3) palabra a los HEX más cercana
el problema es que necesito ser preciso en el mapeo y no tengo idea de dónde buscar. No hay manera de que mis ojos puedan diferenciar el color en ese nivel, pero tal vez haya alguna forma inteligente de probar cada uno de estos 3.
También puede depender del navegador. ¿Esto puede ser probado?
EDIT:
Firefox seems to round from empirical testing.
EDIT:
Estoy mirando a través del código fuente de Firefox en este momento,
nsColor.h
// A color is a 32 bit unsigned integer with four components: R, G, B
// and A.
typedef PRUint32 nscolor;
Parece Fiefox solamente tiene espacio para 255 valores para cada R, G y B. Sugerencia de que el redondeo podría ser la respuesta, pero tal vez se hagan algunas cosas con el canal alfa
Si no puede distinguir entre '# 000000' y' # 000001', ¿por qué necesita la fórmula exacta? También una manera tortuosa de probar sería mostrar un bloque del color, presionar Imprimir pantalla, y usar la herramienta cuentagotas de un programa de gráficos para averiguar el valor hexadecimal resultante. – Toomai
Estoy trabajando en un tipo de analizador sintáctico, supongo, el usuario final no debería ser capaz de distinguir entre # 000000 y # 000001, pero el código debe ser equivalente en todas las cuentas. Sin embargo, me gusta la idea del cuentagotas como primer paso, ¡gracias! – Ray
Si la especificación no especifica una asignación, entonces espero que sea dependiente del navegador, o al menos si no depende del navegador, entonces es solo una coincidencia que no lo sea. Imagino que mientras seas consecuente estarás tan preciso como puedas. ¿Has verificado con firebug o algo así en el estilo calculado para ver cómo termina? – jswolf19