imagecolorclosest

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecolorclosest Получает ближайший индекс цвета

Описание

imagecolorclosest(
    GdImage $image,
    int $red,
    int $green,
    int $blue
): int

Функция возвращает индекс цвета в палитре изображения, «ближайшего» к заданному RGB-значению.

«Расстояние» между цветами в палитре рассчитывается геометрически, как если бы RGB-значения представлялись в виде точек в трёхмерном пространстве.

В изображениях, которые создали из файла, функция распознаёт только цвета самого рисунка, поэтому игнорирует цвета, которые содержит палитра, но не включает изображение.

Список параметров

image

Объект GdImage, который вернула функция imagecreatetruecolor() или другая функция генерации изображений.

red

Значение красного компонента цвета.

green

Значение зелёного компонента цвета.

blue

Значение синего компонента цвета.

Параметры цвета разрешается указывать либо целочисленными значениями в диапазоне от 0 до 255, либо шестнадцатеричными значениями в диапазоне от 0x00 до 0xFF.

Возвращаемые значения

Функция возвращает ближайший к заданному индекс цвета в палитре изображения.

Список изменений

Версия Описание
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).

Смотрите также

  • imagecolorexact() - Получает индекс цвета
  • imagecolorclosestalpha() - Получает ближайший индекс цвета с учётом прозрачности
  • imagecolorclosesthwb() - Получает индекс цвета с заданными тоном, белизной и затемнением