Средний цвет изображения php

Обнаружить «общий средний» цвет изображения

Мне нужно знать «общий средний» цвет изображения. На первый взгляд можно использовать гистограмму изображения (канал RGB).

На работе я использую в основном JavaScript и PHP (немного Python), поэтому приветствовал решение на этих языках. Возможно, это библиотека для работы с изображениями, которые затрагивают аналогичные проблемы.

Мне не нужно динамически определять цвет изображения. Мне нужно только один раз пройти весь массив изображений и определить цвет каждого отдельно (эту информацию я буду помнить для будущего использования).

Вы можете использовать PHP для получения массива цветовой палитры:

 $img = @imagecreatefromjpeg($imageFile); // Andres mentioned in the comments the above line only loads jpegs, // and suggests that to load any file type you can use this: // $img = @imagecreatefromstring(file_get_contents($imageFile)); if(!$img) < user_error("Unable to open image file"); return false; >for($x = 0; $x < $size[0]; $x += $granularity) < for($y = 0; $y < $size[1]; $y += $granularity) < $thisColor = imagecolorat($img, $x, $y); $rgb = imagecolorsforindex($img, $thisColor); $red = round(round(($rgb['red'] / 0x33)) * 0x33); $green = round(round(($rgb['green'] / 0x33)) * 0x33); $blue = round(round(($rgb['blue'] / 0x33)) * 0x33); $thisRGB = sprintf('%02X%02X%02X', $red, $green, $blue); if(array_key_exists($thisRGB, $colors)) < $colors[$thisRGB]++; >else < $colors[$thisRGB] = 1; >> > arsort($colors); return array_slice(array_keys($colors), 0, $numColors); > // sample usage: $palette = colorPalette('rmnp8.jpg', 10, 4); echo "\n"; foreach($palette as $color) < echo "\n"; > echo "
 #$color
\n";

Что дает вам массив, значения которого выше для того, как часто этот цвет использовался.

EDIT . Комментируя вопрос, как использовать это для всех файлов в каталоге, вот он:

 if ($handle = opendir('./path/to/images')) < while (false !== ($file = readdir($handle))) < $palette = colorPalette($file, 10, 4); echo "\n"; foreach($palette as $color) < echo "\n"; > echo "
 #$color
\n"; > closedir($handle); >

возможно, не захочет делать это на слишком большом количестве файлов, но это ваш сервер.

Альтернативно, если вы предпочитаете использовать библиотеку Color-Theif Javascript Lokesh, то именно то, что вы ищете.

Объединяя Дж. Кирчарца и Александра Хьюгестранда, ответьте:

 function getAverage($sourceURL)< $image = imagecreatefromjpeg($sourceURL); $scaled = imagescale($image, 1, 1, IMG_BICUBIC); $index = imagecolorat($scaled, 0, 0); $rgb = imagecolorsforindex($scaled, $index); $red = round(round(($rgb['red'] / 0x33)) * 0x33); $green = round(round(($rgb['green'] / 0x33)) * 0x33); $blue = round(round(($rgb['blue'] / 0x33)) * 0x33); return sprintf('#%02X%02X%02X', $red, $green, $blue); > 

Пробовал и тестировал, возвращает шестую строку.

Читайте также:  Php proxy что это

Откройте объект Image. Используйте метод getdata для получения всех пикселей. Средние значения, которые вы возвращаете.

Определение цвета изображения с использованием python

Более коротким решением для истинного цветного изображения было бы масштабирование до размера 1×1 пикселя и выборка цвета в этом пикселе:

$ scaled = imagescale ($ img, 1, 1, IMG_BICUBIC); $ meanColor = imagecolorat ($ img, 0, 0);

Я создал пакет композитора, который предоставляет библиотеку для выбора среднего цвета из данного изображения по его пути.

Вы можете установить его, выполнив следующую команду в каталоге проекта:

composer require tooleks/php-avg-color-picker 
getImageAvgHexByPath('/absolute/path/to/the/image.(jpg|jpeg|png|gif)'); // The `$imageAvgHexColor` variable contains the average color of the given image in HEX format (#fffff). 

Источник

Определить «общий средний» цвет изображения

У меня есть jpg-образ. Мне нужно знать «общий средний» цвет изображения. На первый взгляд можно использовать гистограмму изображения (канал RGB). На работе я использую в основном JavaScript и PHP (немного Python), поэтому приветствовал решение на этих языках. Возможно, это библиотека для работы с изображениями, которые обращаются к аналогичным проблемам. Мне не нужно динамически определять цвет изображения. Мне нужно только один раз пройти весь массив изображений и определить цвет каждого отдельно (эту информацию я буду помнить для будущего использования).

@mplungjan, есть такая библиотека javascript http://www.pixastic.com/lib/docs/ , они каким-то образом получают информацию о цветах. или я ошибаюсь?

похоже, что опубликованная вами библиотека поддерживается только HTML 5 . и говорит, что только Firefox может поддерживать все функции.

5 ответов

Вы можете использовать PHP, чтобы получить массив цветовой палитры:

 $img = @imagecreatefromjpeg($imageFile); // Andres mentioned in the comments the above line only loads jpegs, // and suggests that to load any file type you can use this: // $img = @imagecreatefromstring(file_get_contents($imageFile)); if(!$img) < user_error("Unable to open image file"); return false; >for($x = 0; $x < $size[0]; $x += $granularity) < for($y = 0; $y < $size[1]; $y += $granularity) < $thisColor = imagecolorat($img, $x, $y); $rgb = imagecolorsforindex($img, $thisColor); $red = round(round(($rgb['red'] / 0x33)) * 0x33); $green = round(round(($rgb['green'] / 0x33)) * 0x33); $blue = round(round(($rgb['blue'] / 0x33)) * 0x33); $thisRGB = sprintf('%02X%02X%02X', $red, $green, $blue); if(array_key_exists($thisRGB, $colors)) < $colors[$thisRGB]++; >else < $colors[$thisRGB] = 1; >> > arsort($colors); return array_slice(array_keys($colors), 0, $numColors); > // sample usage: $palette = colorPalette('rmnp8.jpg', 10, 4); echo "\n"; foreach($palette as $color) < echo "\n"; > echo "
 #$color
\n";

Что дает вам массив, значения которого выше для того, как часто использовался этот цвет.

ИЗМЕНИТЬ Один из комментаторов спросил, как использовать это для всех файлов в каталоге, а именно:

 if ($handle = opendir('./path/to/images')) < while (false !== ($file = readdir($handle))) < $palette = colorPalette($file, 10, 4); echo "\n"; foreach($palette as $color) < echo "\n"; > echo "
 #$color
\n"; > closedir($handle); >

возможно, не захочет делать это на слишком большом количестве файлов, но это ваш сервер.

Читайте также:  Echo php ini values

Альтернативно, если вы предпочитаете использовать Javascript Библиотека Lokesh Color-Theif делает именно то, что вы ищете.

Сделай это Bang! Изменить $img = @imagecreatefromgif($imageFile); в $img = @imagecreatefromstring(file_get)); и теперь вы можете обрабатывать различные типы изображений .

код для изменения на самом деле @imagecreatefromjpeg($imageFile в настоящее время предполагается, что вы используете jpgs.

Источник

Обнаружить «общий средний» цвет изображения

Мне нужно знать «общий средний» цвет изображения. На первый взгляд можно использовать гистограмму изображения (канал RGB).

На работе я использую в основном JavaScript и PHP (немного Python), поэтому приветствовал решение на этих языках. Возможно, это библиотека для работы с изображениями, которые затрагивают аналогичные проблемы.

Мне не нужно динамически определять цвет изображения. Мне нужно только один раз пройти весь массив изображений и определить цвет каждого отдельно (эту информацию я буду помнить для будущего использования).

Вы можете использовать PHP для получения массива цветовой палитры:

 $img = @imagecreatefromjpeg($imageFile); // Andres mentioned in the comments the above line only loads jpegs, // and suggests that to load any file type you can use this: // $img = @imagecreatefromstring(file_get_contents($imageFile)); if(!$img) < user_error("Unable to open image file"); return false; >for($x = 0; $x < $size[0]; $x += $granularity) < for($y = 0; $y < $size[1]; $y += $granularity) < $thisColor = imagecolorat($img, $x, $y); $rgb = imagecolorsforindex($img, $thisColor); $red = round(round(($rgb['red'] / 0x33)) * 0x33); $green = round(round(($rgb['green'] / 0x33)) * 0x33); $blue = round(round(($rgb['blue'] / 0x33)) * 0x33); $thisRGB = sprintf('%02X%02X%02X', $red, $green, $blue); if(array_key_exists($thisRGB, $colors)) < $colors[$thisRGB]++; >else < $colors[$thisRGB] = 1; >> > arsort($colors); return array_slice(array_keys($colors), 0, $numColors); > // sample usage: $palette = colorPalette('rmnp8.jpg', 10, 4); echo "\n"; foreach($palette as $color) < echo "\n"; > echo "
 #$color
\n";

Что дает вам массив, значения которого выше для того, как часто этот цвет использовался.

EDIT . Комментируя вопрос, как использовать это для всех файлов в каталоге, вот он:

 if ($handle = opendir('./path/to/images')) < while (false !== ($file = readdir($handle))) < $palette = colorPalette($file, 10, 4); echo "\n"; foreach($palette as $color) < echo "\n"; > echo "
 #$color
\n"; > closedir($handle); >

возможно, не захочет делать это на слишком большом количестве файлов, но это ваш сервер.

Альтернативно, если вы предпочитаете использовать библиотеку Color-Theif Javascript Lokesh, то именно то, что вы ищете.

Объединяя Дж. Кирчарца и Александра Хьюгестранда, ответьте:

 function getAverage($sourceURL)< $image = imagecreatefromjpeg($sourceURL); $scaled = imagescale($image, 1, 1, IMG_BICUBIC); $index = imagecolorat($scaled, 0, 0); $rgb = imagecolorsforindex($scaled, $index); $red = round(round(($rgb['red'] / 0x33)) * 0x33); $green = round(round(($rgb['green'] / 0x33)) * 0x33); $blue = round(round(($rgb['blue'] / 0x33)) * 0x33); return sprintf('#%02X%02X%02X', $red, $green, $blue); > 

Пробовал и тестировал, возвращает шестую строку.

Читайте также:  Config php настройка базы данных

Откройте объект Image. Используйте метод getdata для получения всех пикселей. Средние значения, которые вы возвращаете.

Определение цвета изображения с использованием python

Более коротким решением для истинного цветного изображения было бы масштабирование до размера 1×1 пикселя и выборка цвета в этом пикселе:

$ scaled = imagescale ($ img, 1, 1, IMG_BICUBIC); $ meanColor = imagecolorat ($ img, 0, 0);

Я создал пакет композитора, который предоставляет библиотеку для выбора среднего цвета из данного изображения по его пути.

Вы можете установить его, выполнив следующую команду в каталоге проекта:

composer require tooleks/php-avg-color-picker 
getImageAvgHexByPath('/absolute/path/to/the/image.(jpg|jpeg|png|gif)'); // The `$imageAvgHexColor` variable contains the average color of the given image in HEX format (#fffff). 

Источник

Русские Блоги

Посмотрите прямо под код программы: Результатом заключается в следующем: Финансируется в: https://blog.51cto.com/xplaf/1976965.

springmvc

Что такое SpringMVC Легкий каркас, похожий на struts2 Используйте режим архитектуры mvc для разделения веб-слоя springmvc — это webmvc в весенней структуре Сопоставление запросов, используемое для упр.

GCC Learning (2) U-boot.lds

Проанализируйте файл uboot.lds 1 Использование output_format (по умолчанию, Big, Little), указание формата вывода, формат ELF, 32 -бит инструкции ARM, небольшой конец. 2 output_arch (ARM) Указанная ар.

Конфигурация переменной установки и среды JDK-9

JDK -9 выпущен в сентябре 2017 года, учитываяОфициальное утверждение сайтаOracle не будет опубликовать дальнейшие обновления Java SE 8 к своим сайтам скачивания для коммерческого использования после к.

Определение начального значения переменной modelica

Когда я впервые использую Modelic, я не знаю, как определить начальное значение переменной. Обычно система по умолчанию устанавливает начальное значение равным 0, в результате чего некоторые симуляции.

Вам также может понравиться

WIN10 (GetForce GTX 1650 TI)+CUDA11.0.228+CUDNN-X64-V8.0.2.39+TensorFlow-GPU2.4.1+Pytorch1.8.1 (5)

Эта статья описана в CUDA11.0.228+CUDNN-X64-V8.0.2.39, используя Anaconda для установки Pytorch. Pytorch намного проще TF. Сначала следуйтеПредыдущий учебник Создайте среду pytorch_env, а затем выбери.

pyimagesearch-3 Базовая обработка изображений в Python и OpenCV: изменение размера (масштабирование), поворот и обрезка

Оригинальная ссылка Вы готовы начать создавать свой первый поисковик изображений? Не так быстро! Давайте начнем с некоторой базовой обработки изображений и операций, которые пригодятся вам на пути к п.

Узнайте 5 минут и в то же время выполните пакетные команды операции для 100+ виртуальных машин Linux, таких как: дисковые разделы, каталог монтирования, максимальное количество соединений для изменения виртуальных машин Linux;

Посмотреть информацию о жестком диске fdisk -l Недавно установленная система Virtual Machine Machine обнаружила, что существует жесткий диск/dev/mapper/centos-root, в общей сложности 14,4 ГБ Посмотрет.

BNEF: мировой перспективы на фотоэлектрическом рынке во втором квартале 2017 года

Поскольку Китай хочет контролировать чрезмерное развитие внутренней фотоэлектрической промышленности, обусловленной политикой субсидий и способствовать реформе власти, фотоэлектрическая промышленность.

Источник

Оцените статью