как цвета в hex вывести?

Духовность™

Продвинутый новичок
как цвета в hex вывести?

Че-то я не понимаю, как эти ваши компьютеры работают. Мне надо вывести все оттенки всех цветов в шестнадцатеричной системе, что бы я мог взять цвет, например, #994015 и мог бы найти его соседа..

вот написал что-то, но это RGB

PHP:
for ($i=0; $i<256; $i+=16)
{
    for ($j=0; $j<256; $j+=16)
    {
        echo '<tr>';

        for ($k=0; $k<256; $k+=16)
        {
            // не работает это
            $r = base_convert ($i, 10, 16);
            $g = base_convert ($j, 10, 16);
            $b = base_convert ($k, 10, 16);

            echo '<td style="background-color:rgb('.$i.','.$j.','.$k.')">&nbsp;&nbsp;&nbsp;&nbsp;</td>';
        }

        echo '</tr>';
    }
}
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Я тебе по секрету скажу - это и есть RGB, просто не в десятичной форме записи, а компьютеры тут непричем, а школьная математика - системы счисления лишь это.
 

Духовность™

Продвинутый новичок
флоппик
я математику в школе не учил. я в школе был задрот-двоечник, поэтому основы не знаю.

просто не в десятичной форме записи
Так я пытался получить hex так:
PHP:
$r = base_convert ($i, 10, 16);
            $g = base_convert ($j, 10, 16);
            $b = base_convert ($k, 10, 16);
и подставить это все в background-color, но там ахинея получается какая-то.
 

Splurov

Новичок
triumvirat
ты переработал похоже :)
посмотри какие числа получаются из base_convert (1, 10, 16), например, и какие нужны для указания цвета
p0is0n лучший вариант предложил
 

Духовность™

Продвинутый новичок
Я не понимаю, что вы предлагаете. Написать так?

PHP:
for ($i=0; $i<256; $i+=16)
{
    for ($j=0; $j<256; $j+=16)
    {
        echo '<tr>';

        for ($k=0; $k<256; $k+=16)
        {
            $r = base_convert ($i, 10, 16);
            $g = base_convert ($j, 10, 16);
            $b = base_convert ($k, 10, 16);

            $r = is_numeric($r) ? sprintf("%02d", $r) : $r;
            $g = is_numeric($g) ? sprintf("%02d", $g) : $g;
            $b = is_numeric($b) ? sprintf("%02d", $b) : $b;

            $color = $r.$g.$b;

            echo '<td style="background-color:#'.$color.'">'.$color.'</td>';
        }

        echo '</tr>';
    }
}
 

untied

Сдвинутый новичок
triumvirat, ты унылый тролль!

sprintf("%02X",$val)

никаких преобразований системы счисления вообще не нужно.

PS. Ты себе счетчик сообщений накрутил что ли? Не верю я, что кто-то такие вопросы на полном серьезе задает...
 

Духовность™

Продвинутый новичок
Да я понял, вы мне все одно и то же советуете. dechex и sprintf дают одинаковый эффект, я это все прекрасно вижу. Вопрос в другом.
 

Духовность™

Продвинутый новичок
я ещё сам не знаю. у меня есть цвет, который является чьим-то оттенком, какого-то цвета. мне нужно вывести список всех возможных оттенков данного цвета, что бы иметь возможность найти этот цвет и его ближайших соседей чисто для визуального восприятия и оценки данного цвета для подбора графического оформления CSS.
 

untied

Сдвинутый новичок
Вообще говоря, оттенок цвета -- это тонкая штука. Кто-то их различает миллионами, а кто-то всего тысячами. Зависит от восприятия. А еще очень сильно от качества монитора!

В твоей задаче нужно менять каждую компоненту в определенных пределах. Т.е. для цвета RGB оттенками будут (R+1)GB (R+2)GB (R+3)GB (R-1)GB (R-2)GB R(G+1)B R(G+2)B ну и т.д.

Вот в каких пределах можно менять компоненты придется самому определять. Визуально.
 

zerkms

TDD infected
Команда форума
Ещё - оттенками вполне можно называть изменение компонентов цвета по движению к белому или чёрному углам кубика RGB.

Так что всё как всегда - зависит от задачи, которая к программированию, откровенно говоря, имеет отношения мало :)
 

akd

dive now, work later
Команда форума
я бы, все-таки, начал с ознакомления с "теорией цвета". в гугл.
 

p0is0n

Новичок
triumvirat, так ты думал получить оттенки переведя всего-лишь RGB => HEX?
 

untied

Сдвинутый новичок
Это вообще просто. Нужно из RGB перевести в шкалу серого (в инете формулу погугли, если не найдешь, я подскажу: она просто не под рукой ща). У тебя получится одно число от 0 до 255. Ясно, что 0 совсем не близко к белому цвету, а 255 это он и есть.
Ну и порог близости сам назначь по визуальным ощущениям. Например, 250 близко к белому, а 249 -- уже не близко.
 
Сверху