у вас ошибка, как и у автора, в функции diff. Если поменять порядок изображений — изменится результат, а это не правильно. я писал об этом выше во втором комментарии.
у вас ошибка, как и у автора, в функции diff. Если поменять порядок изображений — изменится результат, а это не правильно. я писал об этом выше во втором комментарии.
алгоритм интересен, но вот реализация хромает, имхо.
использование @ неоправдано, можно было обойтись такой инициализацией:
$average=array('red' => 0, 'blue' => 0, 'green' => 0);
не нравится изменения типов переменных: то average у вас массив, то уже число.
алгоритм можно упростить до такого:
//Заполняем маску и вычисляем базовый цвет
for($x=0;$x<20;$x++)
for($y=0;$y<20;$y++)
{
$color=imagecolorat($zone,$x,$y);
$color=imagecolorsforindex($zone,$color);
//Вычисление яркости было подсказано хабраюзером Ryotsuke
$colormap[$x][$y]= 0.212671 * $color['red'] + 0.715160 * $color['green'] + 0.072169 * $color['blue'];
$average += $colormap[$x][$y];
}
//Базовый цвет
$average /= 400;
причём применять функцию дважды с разным порядком элементов. а результат уже брать либо как среднее, либо как минимальное, это уже нужно на конкретных примерах выбирать.
я думаю автор имел ввиду, что 7 ноября на Земле существует 50 часов :)
почему именно 50, а не 48? просто из-за того, что кроме поясов от -12 до +12 существует ещё 2 пояса: +13 и +14, которые и дают дополнительных 2 часа.
URL обрабатывается с помощью роутов и если мы использовали роут, например, 'post/:post_id/*', то в контроллере мы сможем с помощью $this->_getParam('post_id') получить этот параметр.
При этом совсем необязательно, что бы имя контроллера совпадало с post. Модуль, контроллер и экшен — это всё указывается в настройках роута.
Один из роутов, используемый в нашем проетке, выглядит так:
new Zend_Controller_Router_Route('user/:login/:action/*', array('module' => 'default', 'controller' => 'user', 'action' => 'index'));
array_intersect — это функция php.
использование @ неоправдано, можно было обойтись такой инициализацией:
$average=array('red' => 0, 'blue' => 0, 'green' => 0);
не нравится изменения типов переменных: то average у вас массив, то уже число.
алгоритм можно упростить до такого:
Для примера:
[1 1]&[0 1]=1
[0 1]&[1 1]=0.5
Как вариант могу предложить использовать функцию array_intersect
почему именно 50, а не 48? просто из-за того, что кроме поясов от -12 до +12 существует ещё 2 пояса: +13 и +14, которые и дают дополнительных 2 часа.
При этом совсем необязательно, что бы имя контроллера совпадало с post. Модуль, контроллер и экшен — это всё указывается в настройках роута.
Один из роутов, используемый в нашем проетке, выглядит так:
new Zend_Controller_Router_Route('user/:login/:action/*', array('module' => 'default', 'controller' => 'user', 'action' => 'index'));
Если нужны объяснения — спрашивайте :)
как иногда хочется пойти и поплавать часок, особенно утром…