Ответов: 12 Просмотров: 6668
|
PHP:
скопировать код в буфер обмена
class ParsingColors { //В этой переменной храниться ссылка на изображение var $img_obj; //Всего цветов в картинке var $total_colors; //Массив в котором содержаться все цвета и их количество в изображении var $arr_colors; function __construct($img_path) { //Создаем картинку $this->img_height = imagesy($this->img_obj); $this->img_width = imagesx($this->img_obj); } /**** Метод с которого начинается распаршивание картинки на цвета ****/ function process($interval_check) //Интервал проверки пикселей на цвет { for($i=0;$i<$this->img_height;$i++) { for($a=0;$a<$this->img_width;$a=$a+$interval_check) { if(empty($array[$color])) { $array[$color] = 1; $this->total_colors++; } else $array[$color]++; } } $this->destroy_img(); $this->arr_colors = $array; return $array; } /**** Метод отбирает цвета, которые наиболее часто используются и определяет процент использования ДЛЯ ВЫВОЗА ТРЕБУЕТСЯ ЗНАЧЕНИЕ ВОЗВРАЩАЕМОЕ ФУНКЦИЕЙ $this->process() ****/ { $array = $this->arr_colors; //Счетчик $c = 1; foreach($array as $key => $var) { $result['procent'][$key] = ($var / $this->total_colors) * 100; if($c == $limit) break; $c++; } return $result; } /**** Метод для уничтожения картинки ****/ function destroy_img() { if($this->img_obj) } } $img = new ParsingColors('1.jpg'); //Интервал проверки пиксела на цвет $img->process(5); $result = $img->Sort(20); foreach($result['procent'] as $key => $var) { echo "<div style='min-width:50px; min-height:50px; margin:5px; background-color:#{$key}; float:left;'>{$key} {$var}</div>"; }
Написал такой класс, но он выводит 20 самых популярных цветов! А нужно чтобы выводил как здесь http://wpapers.ru/wallpapers/avto/other-cars/5647/. Тоесть чтобы не выводил чисто одинаковые цвета. |