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

# imagecolorclosest

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

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

### Описание

function 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() - Получает индекс цвета с заданными тоном, белизной и затемнением

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open