Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод списка RGB-цветов
 
 автор: Udachix   (27.09.2013 в 16:10)   письмо автору
 
 

Нужно вывести список всех RGB цветов от 000,000,000 до 255,255,255. Честно говоря, запарился.
Сделал вначале по типу:
$i
{
 $j
 {
  $l
  {
   ...
  }
 }
}
, но понял, что постраничный вывод сложно так сделать.
Решил перейти на вариант с обычным числом:
$i = 0; $i <= 255255255; $i++

Но тут сложно вырезать числа вроде 255255260.
Вообщем, кто какие варианты полегче знает, может уже совершали такой код?

  Ответить  
 
 автор: confirm   (27.09.2013 в 16:29)   письмо автору
 
   для: Udachix   (27.09.2013 в 16:10)
 

Каждая цветовая компонента хранится в двух байтах (для 24 битного цвета), и максимум это FFFFFF, что соответствует 16777215 цветам. Именно это значение и есть последним значением итерации цикла, а никак ни 255255255.

  Ответить  
 
 автор: magic   (28.09.2013 в 00:10)   письмо автору
 
   для: Udachix   (27.09.2013 в 16:10)
 

Посмотрите, если я правильно понял вопрос. Но если нет, то все равно идея видна. Так что пробуйте

<?php
$clr 
= Array('00','10','20','30','40','50','60','70','80','90','a0','b0','c0','d0''e0''ff'); // задать стартовые цвета 
echo "<table border=0 cellpadding=10 cellspacing=1>"
for(
$i=0$i<16$i++)
{
    for(
$j=0$j<16$j++) 
    {
        echo 
"<tr>"
        for(
$k=0$k<16$k++) 
        {
            echo 
'<td bgcolor="#'.$clr[$i].$clr[$j].$clr[$k].'">'
            echo 
'<tt><font color="#'.$clr[7-$i].$clr[7-$j].$clr[7-$k].'">'
            echo 
$clr[$i].$clr[$j].$clr[$k]."</font></tt></td>";
        } 
        echo 
"</tr>";
    }
}
echo 
"</table><br>"
?>

  Ответить  
 
 автор: Udachix   (28.09.2013 в 01:02)   письмо автору
 
   для: magic   (28.09.2013 в 00:10)
 

Это понятно. Нет, это слишком простой вариант и количество цветов ограничено. Мне нужен весь список. Именно поэтому он должен выводиться постранично. И не в HEX, а в RGB. Но спасибо за вариант — плюс в архив форума.

  Ответить  
 
 автор: confirm   (28.09.2013 в 03:18)   письмо автору
 
   для: Udachix   (28.09.2013 в 01:02)
 

Вроде бы как я вам написал о вашей ошибке? Вы знаете сколько цветов может отобразить 24-цвет. Вы знаете конечное значение итерации цикла для получения всех цветов. Что нужно сделать, чтобы получить 8 битное значение каждой цветовой компоненты в цикле? Нужно сдвигать значение вправо и по маске забирать значение, а не собирать примеры.

  Ответить  
 
 автор: Udachix   (28.09.2013 в 12:18)   письмо автору
 
   для: confirm   (28.09.2013 в 03:18)
 

confirm как всегда недоброжелателен, суров и категоричен )))

  Ответить  
 
 автор: confirm   (28.09.2013 в 13:30)   письмо автору
 
   для: Udachix   (28.09.2013 в 12:18)
 

Во мне столько же строгости сколько и в бабушке вяжущей носки.

Цвета выставляют для какой-то мало мальски пользы, то есть с возможностью выбора сортировки по насыщенности, по цветовому оттенку, по серой шкале и т.п. К тому же цвета показывают еще с учетом веб, то указывают как десятичные значения компонент, так и шестнадцатеричное представление цвета и плюс возможность отобразить только безопасные веб цвета.

У вас этого ничего нет, и ваша таблица либо "для понту", либо не понять для каких целей, в общем смотреть нечего, а посему и ссылки не надо, не интересно.

  Ответить  
 
 автор: Udachix   (28.09.2013 в 14:21)   письмо автору
 
   для: confirm   (28.09.2013 в 13:30)
 

Отдельное мнение. Не надо — можно и не писать.

if ( ! isset ( Интерес ) ) echo'';

  Ответить  
 
 автор: Udachix   (28.09.2013 в 12:18)   письмо автору
 
   для: Udachix   (27.09.2013 в 16:10)
 

Результат получен — утро вечера мудренее:
<?php
echo'<table style="margin: 0 auto 0 auto; width: 96%" border="0">';
    unset ( 
$R $G $B $i );
    
$R floor $_GET 'page' ] / 256 );
    
$G floor $_GET 'page' ] - ( 256 floor $_GET 'page' ] / 256 ) ) );
    
$B 0;
    for ( 
$i $B$i <= 255$i++ )
    {
        if ( ! ( 
$i ) ) echo'<tr>';
        echo
'<td style="background-color: rgb( '.$R.' , '.$G.' , '.$i.' ); border: 1px solid #fff; width: 12%; height: 40px" align="center" valign="middle">';
            echo 
$R.' , '.$G.' , '.$i;
        echo
'</td>';
        if ( ! ( ( 
$i ) % ) ) echo'</tr>';
    }
echo
'</table>';
?>

Остаётся только постраничный вывод сделать, если нужно.
Первая страница — 1, последняя — 65 535.
Результат могу показать на сайте (кому нужно — спросите, здесь ссылку давать не буду, а то рекламой посчитают).

  Ответить  
 
 автор: Udachix   (28.09.2013 в 14:30)   письмо автору
5.7 Кб
 
   для: Udachix   (28.09.2013 в 12:18)
 

Пример применения (кому фантазии не хватает).

Все три картинки (разного цвета) созданы с помощью библиотеки GD с использованием прямоугольных блоков разного цвета.

  Ответить  
 
 автор: Zezst   (29.09.2013 в 14:41)   письмо автору
 
   для: Udachix   (28.09.2013 в 14:30)
 

Прямоугольники красивыйе, но почему нельзя было решить это HEX числами?
У вас так принципиально делался упор на десятичную систему.

  Ответить  
 
 автор: Udachix   (30.09.2013 в 04:17)   письмо автору
 
   для: Zezst   (29.09.2013 в 14:41)
 

С цифрами, вроде как, проще. Они же просто цифры. И в GB-библиотеке RGB требуется для указания фона.

  Ответить  
 
 автор: Sfinks   (04.10.2013 в 20:29)   письмо автору
 
   для: Udachix   (30.09.2013 в 04:17)
 

И в GB-библиотеке RGB требуется для указания фона.
Т.е. она не понимает 16ричную систему?
Т.е. ПХП тоже не понимает?
Вы уверены?
Или в RGB не возможно использование HEX?
А что вы понимаете под HEX?
Это какая-то схема светопередачи, типа RGB, CMYK и т.д. ?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования