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


(PHP 4, PHP 5)

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

Описание

int imagecolorclosest ( resource $image , int $red , int $green , int $blue )

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

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

Если изображение было создано из файла, то будут распознаны только цвета, используемые в изображении. Цвета, которые используются только в палитре, распознаны не будут.

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

image

Ресурс изображения, полученный одной из функций создания изображений, например, такой как imagecreatetruecolor().

red

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

green

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

blue

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

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

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

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

Примеры

Пример #1 Поиск набора цветов изображения

<?php
// Создание изображения и преобразование его в палитровое
$im imagecreatefrompng('figures/imagecolorclosest.png');
imagetruecolortopalette($imfalse255);

// Цвета для поиска (RGB)
$colors = array(
    array(
254145154),
    array(
153145188),
    array(
15390145),
    array(
25513792)
);

// Проход по каждому цвету и поиск ближайшего к нему в палитре.
// Возврат номера по порядку, 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: Search ($rgb[0]$rgb[1]$rgb[2]); Closest match: $result.\n";
}

imagedestroy($im);
?>

Результатом выполнения данного примера будет что-то подобное:

 #0: Search (254, 145, 154); Closest match: (252, 150, 148). #1: Search (153, 145, 188); Closest match: (148, 150, 196). #2: Search (153, 90, 145); Closest match: (148, 90, 156). #3: Search (255, 137, 92); Closest match: (252, 150, 92). 

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

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