Antes que nada, creo que debería echar un vistazo a esta excelente publicación de blog en Particletree.
Dicho esto, me gustaría utilizar su smarty_modifier_contrast() y modificarlo un poco para hacer frente a sus necesidades específicas, algo así como:
function color_contrast($bgcolor, $color1, $color2, $color3, ...)
{
return (hexdec($bgcolor) > 0xffffff/2) ? min(array_slice(func_get_args(), 1)) : max(array_slice(func_get_args(), 1));
}
Así que sólo se necesita utilizar cualquier color al azar para el fondo (no se olvide de soltar #
!) y pase todos los demás colores a la matriz, en este caso he usado una cantidad variable de argumentos, pero puede cambiarlo para que acepte una sola matriz de colores: seleccionará automáticamente el color más oscuro o más claro según $bgcolor
y proporcionar una buena suficiente contraste para facilitar la lectura:
function color_contrast($bgcolor, $colors = array())
{
return (hexdec($bgcolor) > 0xffffff/2) ? min($colors) : max($colors);
}
para escoger el $bgcolor
, puede hacerlo de forma aleatoria como he dicho antes del uso de una segunda función que le ayude con esta tarea como saturación o luminancia , eso realmente depende de lo que estás buscando.
¿Te refieres a algo como $ newRed = (($ rgb ['red'] + 0x80) * 0xFF); Donde $ rgb ['rojo'] es algo así como 163 – Lizard
'& 0xff', en realidad. Pero si. –