Приветствую,
Есть скрипт php. Основные задачи :
1. Анализ доминантных цветов изображения
2. Подбор соответствия доминантного цвета одному из цветов в заведомо известной палитре
Все это дело работает на php gd.
А именно:
1. Подбор цвета по палитре - imagecolorclosest
2. Формула - ближайшего цвета -
$diff = ( sqrt(pow($r1,2) + pow($g1,2)) + sqrt(pow($g1,2) + pow($b1,2)) + sqrt(pow($b1,2) + pow($r1,2))) / 3;
Применение дополнительной формулы расчета обусловлено тем что в палитре цветов для сравнения более 255 цветов. На практике сравнение происходит среди трех или четырех значений ( палитра до 1000 цветов)
С увеличением исходного размера изображения возрастает и время выполнения скрипта в основном за счет расчета формулы ближайшего цвета.
Замена формулы на самый упрощенный вариант
$diff = $r1 + $g1 + $b1;
дает слишком большую погрешность.
Так как время выполнения скрипта на прямую зависит от размеров исходного изображения то одним из вариантов решения задачи (помимо перехода на свой сервер) является искусственное ограничение размеров итогового изображения. Данный вариант работает но, как и следовало ожидать, на большом разрешении наблюдается потеря качества картинки.
Вопрос : как ускорить работу скрипта в рамках текущих технических ограничений ?
Ограничения:
1. Обычный shared hosting за 10$ в месяц
2. php gd
Варианты написания на другом языке рассматриваются. Хотелось бы только реально понимать что это ускорит процесс.
Демо тут
goo.gl/9gQbQC