Прежде всего, я думаю, вам стоит взглянуть на этот отличный пост в блоге по адресу Particletree.
Это, как говорится, я хотел бы использовать их smarty_modifier_contrast() функцию и изменить его немного для решения ваших конкретных потребностей, что-то вроде:
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));
}
Так что вам просто нужно будет использовать любой случайный цвет для background (не забудьте опустить #
!), а затем передать все остальные цвета в массив, в этом случае я использовал переменное количество аргументов, но вы можете изменить его так, чтобы он принимал один массив цветов - он автоматически выбирает самый темный или самый легкий цвет в зависимости от $bgcolor
и обеспечить достаточно хороший контраст для удобства чтения:
function color_contrast($bgcolor, $colors = array())
{
return (hexdec($bgcolor) > 0xffffff/2) ? min($colors) : max($colors);
}
выбрать $bgcolor
, вы можете сделать это случайно, как я уже говорил об использовании второй функции, чтобы помочь вам с этой задачей, как насыщения или яркости , это действительно зависит от того, что вы ищете.
Вы имеете в виду что-то вроде $ newRed = (($ rgb ['red'] + 0x80) * 0xFF); Где $ rgb ['red'] - это что-то вроде 163 – Lizard
'& 0xff'. Но да. –