Помогите сделать градиент

1. Дмитрий (06.07.2010 / 01:20)
Кароче видел типа выбор цвета ника, тока вида градиента, типа черно-красный, как так сделать?

2. Саня (06.07.2010 / 14:23)
Типа красный, темней, еще темней, черный?

3. Дмитрий (06.07.2010 / 14:37)
да, именно так

4. Саня (06.07.2010 / 16:23)
Бери код RGB который выбрали, да и увеличивай его для каждого символа

5. Дмитрий (06.07.2010 / 17:38)
Непонял, можешь пример использования показать?

6. Саня (06.07.2010 / 18:28)
Не магу, знаю только теорию, а на приктике не получается, с цветами не очень дружуsad ))

7. Дмитрий (06.07.2010 / 20:16)
Жаль, теория не оч ясна

8. Nu3oN (06.07.2010 / 22:56)
тебе типа такого что ли надо?
http://upwap.ru/941149

9. chiper (06.07.2010 / 23:43)
8, видимо даsmile

10. Дмитрий (07.07.2010 / 03:00)
Nu3oN совершенно верно, как сделать? smile

11. Nu3oN (07.07.2010 / 03:15)
<?
function GradientLetter($text, $from='', $to='', $mode = 'hex')   
{  

if($mode == 'hex')  
{  
$to  = hexdec($to['0'].$to['1']).','.hexdec($to['2'].$to['3']).','.hexdec($to['4'].$to['5']);  
$from = hexdec($from['0'].$from['1']).",".hexdec($from['2'].$from['3']).",".hexdec($from['4'].$from['5']);  
}  
  

if (empty($text)) return null; else $levels = strlen($text);  
if (empty($from)) $from = array(0, 0, 255); else $from = explode(',', $from);  
if (empty($to)) $to = array(255, 0, 0); else $to = explode(',', $to);  
  
$output = null;  
  
for ($i = 1; $i <= $levels; $i++)  
{  

for ($ii = 0; $ii < 3; $ii++)  
{  
$tmp[$ii] = $from[$ii] - $to[$ii];  
$tmp[$ii] = floor($tmp[$ii] / $levels);  
$rgb[$ii] = $from[$ii] - ($tmp[$ii] * $i);  
  
if ($rgb[$ii] > 255) $rgb[$ii] = 255;  
  
$rgb[$ii] = dechex($rgb[$ii]);  
$rgb[$ii] = strtoupper($rgb[$ii]);  
  
if (strlen($rgb[$ii]) < 2) $rgb[$ii] = '0'.$rgb[$ii];  
}  


$output .= '<span style="color: #'.$rgb['0'].$rgb['1'].$rgb['2'].'">'.$text[$i-1].'</span>';  
}  
return $output;  
}  
?>


12. Nu3oN (07.07.2010 / 03:16)
$text - сама строка
$from - начальный цвет
$to - Конечный цвет
$mode - Режим, по умолчанию hex

Пример использования
<?
echo GradientLetter('Nu3oN', 'FF0000', 'FFCC00').'<br />';  
echo GradientLetter('Nu3oN', '255,255,0', '150,150,0', 'rgb');  
?>
пример http://upwap.ru/941325

13. Дмитрий (07.07.2010 / 03:21)
Спс заяц )) заюзаю твой код авось получицо )

14. Дмитрий (07.07.2010 / 04:25)
Все работает, но опять же загвоздка блин не пойму как сделать этот градиент, только когда он нужен, т.е. только тогда, когда его выбрали

15. Дмитрий (07.07.2010 / 05:49)
Все, разобрался аднака, спс заяц smile

16. Дмитрий (08.07.2010 / 22:34)
Заяц я тут обнаружил если ник русскими, и выберешь градиент - ник становится квадратиками

17. Саня (12.07.2010 / 04:24)
В начале функции вставь
$text=str_split($text);
И замени $levels=strlen($text); на $levels=count($text);
Должно помочь

18. Дмитрий (12.07.2010 / 06:51)
Спасибо, но к сожелению не помогло, вместо нескольких квадратиков просто стало выводить один..

19. Александр (14.07.2010 / 00:25)
удалено

20. Nu3oN (14.07.2010 / 03:17)
Завтра гляну... я ша уже даже смотреть на код не хочу

21. Юрий (14.07.2010 / 08:02)
Mr-General (8 Июля 2010 / 22:34)
Заяц я тут обнаружил если ник русскими, и выберешь градиент - ник становится квадратиками

Добавьте перед
if (empty($text)) return null; else $levels = strlen($text); 

такую строку:
$text = iconv("UTF-8", "cp1251", $text);


22. Артур (14.07.2010 / 09:21)
21. FаN, непроканает

23. Дмитрий (14.07.2010 / 20:21)
FаN я уже додумывался до такого нехитрого метода, и действительно "не проканает" smile

24. Артур (15.07.2010 / 00:24)
Фишка в том, что выводятся символы так: $text[цыфра]. Ну кагбэ утф не поддерживается этим способом ещё...
Надо разбивать текст на массив с символами.
<?php
$var = 'йа великей кукурузо, мне нужна бумажко';
print_r(preg_split('##u', $var, -1, PREG_SPLIT_NO_EMPTY));


URL: https://visavi.net/topics/11250