(PHP 4, PHP 5, PHP 7, PHP 8)
imagecolorclosest — Получает ближайший индекс цвета
Функция возвращает индекс цвета в палитре изображения, «ближайшего» к заданному RGB-значению.
«Расстояние» между цветами в палитре рассчитывается геометрически, как если бы RGB-значения представлялись в виде точек в трёхмерном пространстве.
В изображениях, которые создали из файла, функция распознаёт только цвета самого рисунка, поэтому игнорирует цвета, которые содержит палитра, но не включает изображение.
imageОбъект GdImage, который вернула функция imagecreatetruecolor() или другая функция генерации изображений.
redЗначение красного компонента цвета.
greenЗначение зелёного компонента цвета.
blueЗначение синего компонента цвета.
Функция возвращает ближайший к заданному индекс цвета в палитре изображения.
| Версия | Описание |
|---|---|
| 8.0.0 |
Параметр image теперь принимает объект GdImage;
раньше параметр принимал корректный gd-ресурс (resource).
|
Пример #1 Поиск набора цветов изображения
<?php
// Создание изображения и преобразование его в палитровое
$im = imagecreatefrompng('figures/imagecolorclosest.png');
imagetruecolortopalette($im, false, 255);
// Цвета для поиска (RGB)
$colors = array(
array(254, 145, 154),
array(153, 145, 188),
array(153, 90, 145),
array(255, 137, 92)
);
// Проход по каждому цвету и поиск ближайшего к нему в палитре.
// Возврат номера по порядку, RGB искомого цвета и найденное RGB соответствие
foreach ($colors as $id => $rgb) {
$result = imagecolorclosest($im, $rgb[0], $rgb[1], $rgb[2]);
$result = imagecolorsforindex($im, $result);
$result = "({$result['red']}, {$result['green']}, {$result['blue']})";
echo "#$id: Поиск ($rgb[0], $rgb[1], $rgb[2]); Ближайшее сходство: $result.\n";
}
?>Вывод приведённого примера будет похож на:
#0: Поиск (254, 145, 154); Ближайшее сходство: (252, 150, 148). #1: Поиск (153, 145, 188); Ближайшее сходство: (148, 150, 196). #2: Поиск (153, 90, 145); Ближайшее сходство: (148, 90, 156). #3: Поиск (255, 137, 92); Ближайшее сходство: (252, 150, 92).