Prima di tutto, penso che dovresti dare un'occhiata a questo eccellente post sul blog allo Particletree.
Detto questo, vorrei utilizzare il loro smarty_modifier_contrast function() e modificarlo un po 'per soddisfare le vostre esigenze specifiche, qualcosa di simile:
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));
}
Così si avrebbe solo bisogno di utilizzare qualsiasi colore casuale per il background (non dimenticare di rilasciare il #
!) e quindi passare tutti gli altri colori all'array, in questo caso ho usato un numero variabile di argomenti ma puoi modificarlo in modo che accetti un singolo matrice di colori: selezionerà automaticamente il colore più scuro o più chiaro a seconda dello $bgcolor
e di fornire un buon sufficiente contrasto per migliorare la leggibilità:
function color_contrast($bgcolor, $colors = array())
{
return (hexdec($bgcolor) > 0xffffff/2) ? min($colors) : max($colors);
}
di scegliere il $bgcolor
, si può fare in modo casuale come ho detto prima di utilizzo di una seconda funzione per aiutarvi in questo compito, come saturazione o luminanza , questo dipende davvero da cosa stai cercando.
fonte
2010-04-13 02:04:28
Si intende qualcosa come $ newRed = (($ rgb ['rosso'] + 0x80) * 0xFF); Dove $ rgb ['red'] è qualcosa come 163 – Lizard
'& 0xff', in realtà. Ma si. –