За последние 24 часа нас посетили 34596 программистов и 1695 роботов. Сейчас ищут 687 программистов ...

PHP Gradient

Тема в разделе "PHP для новичков", создана пользователем Lemur, 20 май 2012.

  1. Lemur

    Lemur Активный пользователь

    С нами с:
    20 май 2012
    Сообщения:
    1
    Симпатии:
    0
    Всем доброго времени суток!
    У меня имеется небольшой скриптик, который с помощью циклов и преобразований с НЕХ в RGB цветов создает градиент текста. НО, делает это он с 2-мя цветами, а мне очень нужно с 3-мя. Уже 3-й день бьюсь над этим. Помогите решить данную проблему и укажите путь истинный новичку
    Собственно исходный код (автор к сожалению не известен, спросил бы у него)
    Код (Text):
    1.  
    2. <?php
    3. function str2gradient($text,$from='', $to='', $mode="hex")
    4. {
    5.     if($mode=="hex")
    6.     {
    7.         $to   = hexdec($to[0].$to[1]).",".hexdec($to[2].$to[3]).",".hexdec($to[4].$to[5]);
    8.         $from = hexdec($from[0].$from[1]).",".hexdec($from[2].$from[3]).",".hexdec($from[4].$from[5]);
    9.     }
    10.  
    11.     if( empty($text) )
    12.         return '';
    13.     else
    14.         $levels=strlen($text);
    15.  
    16.     if (empty($from))
    17.                 $from = array(0,0,255);
    18.     else
    19.                 $from = explode(",", $from);
    20.                
    21.     if (empty($to))
    22.  
    23.                 $to = array(255,0,0);
    24.     else
    25.                 $to = explode(",", $to);
    26.  
    27.         $output = "";
    28.  
    29.         for ($i=1;$i<=$levels;$i++)
    30.         {
    31.                 for ($ii=0;$ii<4;$ii++)
    32.                 {
    33.  
    34.             $tmp[$ii] = $from[$ii] - $to[$ii];
    35.                         $tmp[$ii] = floor($tmp[$ii] / $levels);
    36.                         $rgb[$ii] = $from[$ii] -($tmp[$ii] * $i);
    37.  
    38.                         if ($rgb[$ii] > 255) $rgb[$ii] = 255;
    39.  
    40.                         $rgb[$ii] = dechex($rgb[$ii]);
    41.                         $rgb[$ii] = strtoupper($rgb[$ii]);
    42.  
    43.                         if (strlen($rgb[$ii]) < 2) $rgb[$ii] = "0$rgb[$ii]";
    44.                 }
    45.             $output .= "<font color=\"#".$rgb[0].$rgb[1].$rgb[2]."\">" . $text[$i -1 ] . "</font>";
    46.         }
    47.         return $output."\n";
    48. }
    49. echo str2gradient("Привет, я Градиент!", "f11717", "21f117");
    50. ?>