Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Цветовой сборщик - сильно зависает 
:(
    Опции темы
Sukhof
Дата 9.2.2006, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 18.4.2004
Где: Тюмень

Репутация: 0
Всего: 2



Доброе время суток! Есть задача написать под веб цветовой сборщик как в фотопопе, т.е. представлять три цветовые модели (RGB, Lab, CMYK) с возможность отображения только безопасных цветов. Отображение безоп цветов работает отлично т.к. всего 256 цветов. Принцип работа. Одна функция смешивает цвета. Вторая, получив цвет, вставляет его в html таблицу, получается палитра всех web -цветов.

Проблему вызвало следующее. Когда я попытался создать полную палитру цветов (65536) то созданная мною функция явно выглядит громоскло и приводит к полному зависанию.

Помогите усовершенствовать функцию смешивания цветов.

функция выглядит вот так:

Код

function colorgnrt()
                 {
                   $iend = 16;
                   $c = array('','f','e','d','c','b','a','9','8','7','6','5','4','3','2','1','0');



           #смешиваем первую пару (red)
                for ($i=1;$i<=$iend;$i++){$r = $c[$i];
                 for ($i2=1;$i2<=$iend;$i2++){$r2 = $c[$i2];
            #смешиваем вторую  пару (green)
                         for ($k=1;$k<=$iend;$k++){$g = $c[$k];
                          for ($k2=1;$k2<=$iend;$k2++){$g2 = $c[$k2];
              #смешиваем третью   пару (blue)
                                for($t=1;$t<=$iend;$t++){$b = $c[$t];
                                 for($t2=1;$t2<=$iend;$t2++){$b2 = $c[$t2];
                     #соединяем три пары вместе
                                          $color = $r.$r2.$g.$g2.$b.$b2;
                      #отдаем функции полученный цвет
                                                 displayclr($color, $i2, $k2, $t2);

                                                      }}}}}}

                 }

--------------------
Не бойся делать то, что не умеешь. Помни Ковчег построил любитель, а Титаник профессионалы.
PM MAIL   Вверх
Ignat
Дата 9.2.2006, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 10
Всего: 73



Чтоб не выгдядело громоздко, можно HEX перевести в DEC и оперировать числами от 0 до 255. Однако существенного ускорения не будет, т.к. потребуются те же 65536 итераций.


--------------------
Теперь при чем :P
PM   Вверх
Mal Hack
Дата 9.2.2006, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



А что если поработать с 16 ричной системой.
Т.е. берем 16ричное число 00 00 00, и увеличиваем в цикле на 1. При этом, следим за остатком и если надо перекидываем.
Я так понимаю, тут 1 цикл получается...

Вечером, если идей не будет, могу попробовать что-ть накидать.
PM ICQ   Вверх
Ignat
Дата 9.2.2006, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 10
Всего: 73



Цитата(Mal Hack @ 9.2.2006, 15:37 Найти цитируемый пост)

А что если поработать с 16 ричной системой.

Кстати, действительно мысль...
Только что-то я протупил, тут не 65 тыс. итераций, а 16^6=16.7млн smile
Так что set_time_limit(0); и надеемся на лучшее.


--------------------
Теперь при чем :P
PM   Вверх
Mal Hack
Дата 9.2.2006, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Нашел у себя в загашниках кое-что. Подправил. Вот:
Код
<?php

 set_time_limit( 0 );

 $f = fopen( "D:/e.txt" , "w" );
 
 $c = 0x00;
 $str1 = "";
 $str2 = "";
 
 while( $c <= 0xFFFFFF  / 2 )
 {
  $str1 .= sprintf( "%X" , $c )."\n";
  $str2 .= sprintf( "%X" , 0xFFFFFF - $c )."\n";

  print $c++ . "\n";
 }
 
 fwrite( $f , $str1. $str2 );
 
 fclose( $f );
 
?>

PM ICQ   Вверх
Ignat
Дата 9.2.2006, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 10
Всего: 73



Прикольно smile
В одну итерацию два цвета.


--------------------
Теперь при чем :P
PM   Вверх
Mal Hack
Дата 9.2.2006, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



В общем, работать будет долго... smile
Щас поставлю на замер.
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1306 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.