Просмотр поста

.
L!MP
Jane (04.11.2011/18:15)
я вот не знаю, как сгенерировать последовательность промежуточных цветов между 2мя цветами, это то же самое, что интерполяция, используемая графическими редакторами? Надо погуглить...
Зря я прочел этот пост
Вобщем вот что получилось за 20 минут (ОСТОРОЖНО! быдлокод).

/**
* Градиен текста.
*
* @param string $text Текстовая строка.
* @param string $cR Начальный цветовой код (в формате 00AAFF)
* @param string $cR Конечный цветовой код (в формате FFAA00)
*/

function gradient($text, $cL, $cR) {
	$textLen = mb_strlen($text);
	$array = array(
		'A' => '10',
		'B' => '11',
		'C' => '12',
		'D' => '13',
		'E' => '14',
		'F' => '15',
	);
	
	$return = '';
	for ($x = 0; $x < $textLen; $x++) {
		$color = '';
		for ($y = 0; $y < 6; $y++) {
			$color .= strtr((int)(strtr($cL{$y}, $array) + ((strtr($cR{$y}, $array) - strtr($cL{$y}, $array)) / $textLen * $x)), array_flip($array));
		}
		
		$return .= '<span style="color:#' . $color . '">' . $text{$x} . '</span>';
	}
	
	return $return;
}

/* Использование */

echo gradient('OLOLOLOLOLOLOLO', 'FF0000', '00FF00') . '<br />';
echo gradient('OLOLOLOLOLOLOLO', 'FFDD00', '66AA00') . '<br />';
echo gradient('OLOLOLOLOLOLOLO', '00BBFF', 'FFAA00');
Прикрепленные файлы: