Помогите сделать градиент
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)
Не магу, знаю только теорию, а на приктике не получается, с цветами не очень дружу
))
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, видимо да
10.
Дмитрий (07.07.2010 / 03:00)
Nu3oN совершенно верно, как сделать?
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)
Все, разобрался аднака, спс заяц
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 я уже додумывался до такого нехитрого метода, и действительно "не проканает"
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