integer imagecolorclosest(resource image, integer red, integer green, integer blue)
Функция imagecolorclosest (листинг 16.9) возвращает индекс цвета в заданном изображении, который ближе всего к заданному цвету. Цвета рассматриваются в трех­мерных координатах, а близость определяется расстоянием между двумя точками. 
Листинг 16.9. Функции imagecolorclosest, imagecolorexact, imagecolorresolve и imagecolorsforindex
<?php
/*
** Сравнить с цветом, ближайшим к реальному
*/
// попытка открыть изображение с подавлением сообщений об ошибках if(!($image = @imagecreatefromjpeg("waterfall.jpg")))
{
//возникла ошибка, поэтому выход с предварительным //созданием ошибочного изображения $image = imagecreate(200,200);
$colorWhite = imagecolorallocate($image, 255, 255, 255); $colorBlack = imagecolorallocate($image, 0, 0, 0); imagefill($image, 0, 0, $colorWhite);
imagestring($image, 4, 10, 10, "Couldn't load image!",
$colorBlack); header("Content-type: image/png"); imagepng($image); exit();
}
//преобразовать реалистичный цвет в палитру из 128 цветов imagetruecolortopalette($image, FALSE, 128); //перейти в режим 256-цветовой палитры // теперь есть место для размещения imagetruecolortopalette($image, FALSE, 256); // определить индекс цвета, ближайшего к чисто- зеленому $closestColor = imagecolorclosest($image, 0, 255, 0); // нарисовать цветной прямоугольник
imagefilledrectangle($image, 0, 0, 199, 99, $closestColor);
// инвертировать, чтобы получить возможность распечатать RGB- значения
$rgb = imagecolorsforindex($image, $closestColor);
$inverseColor = imagecolorallocate($image,
~$rgb['red'], ~$rgb['green'], ~$rgb['blue']),-imagestring($image, 4, 10, 10,
"{$rgb['red']}, {$rgb['green']}, {$rgb['blue']}",
$inverseColor); // попробовать получить чисто- зеленый цвет $exactColor = imagecolorexact($image, 0, 255, 0); if($exactColor == -1)
{
//если не найден - использовать черный цвет $exactColor = imagecolorallocate($image, 0, 0, 0);
}
// нарисовать цветной блок
imagefilledrectangle($image, 0, 100, 199, 199, $exactColor); // если чисто- зеленого цвета нет, назначить его $resolveColor = imagecolorresolve($image, 0, 255, 0); // нарисовать цветной блок
imagefilledrectangle($image, 0, 200, 199, 299, $resolveColor); // отправить полученное изображение header("Content-type: image/png"); imagepng($image);

 ?> 
integer imagecolorclosestalpha(resource image, integer red, integer green, integer blue, integer alpha)
Функция imagecolorclosestalpha аналогична функции imagecolorclosest с добавлением обработки альфа-канала.
integer imagecolorclosesthwb(resource image, integer hue, integer white, integer black)
Функция imagecolorclosesthwb определяет цвет в изображении, ближайший к определенному цвету по оттенку, уровню белого и черного (HWB). Не следует путать с методом HSV (Hue-Saturation-Value - оттенок-насыщенность-значение), предназначенным для описания цветов. Метод HWB был впервые описан Элви Р. Смитом (Alvy Ray Smith) и Эриком Р. Лайонсом (Eric Ray Lyons) в статье "HWB - A More Intuitive Hue-Based Color Model", опубликованной в Journal of Graphics Tools в 1996 году.
imagecolordeallocate(resource image, integer color)
Функция imagecolordeallocate освобождает цвет в изображении. Она не изменяет пиксели этого цвета в изображении, а удаляет этот цвет из списка цветов, имеющихся для рисования.
resource imagecolorexact(resource image, integer red, integer green, integer blue)
Функция imagecolorexact предназначена для определения индекса цвета заданного изображения, который точно соответствует заданному цвету. Если такого цвета не существует, она возвращает значение -1.
integer imagecolorexactalpha(resource image, integer red, integer green, integer blue, integer alpha)
Функция imagecolorexactalpha аналогична функции imagecolorexact с добавлением обработки альфа-канала.
boolean imagecolormatch(resource truecolor_image, resource palette_image)
Функция imagecolormatch настраивает палитру в соответствии с заданным аргументом palette_image для получения полного соответствия с реалистичной версией представления цветов. Эта функция позволяет улучшить качество изображения, преобразованного в малую палитру, с помощью функции imagetruecolortopalette.
integer imagecolorresolve(resource image, integer red, integer green, integer blue)
Функция imagecolorresolve возвращает идентификатор цвета на основании заданного цвета. Если такого цвета в палитре изображения не существует, он будет добавлен. Если его добавление невозможно, возвращается идентификатор ближайшего цвета. 
integer imagecolorresolvealpha(resource image, integer red, integer green, integer blue, integer alpha)
Функция imagecolorresolvealpha аналогична функции imagecolorresolve с добавлением обработки альфа-канала.
boolean imagecolorset(resource image, integer index, integer red, integer green, integer blue)
Функция imagecolorset устанавливает цвет по заданному индексу для заданного цвета. Эта функция работает только для изображений, заданных в палитре. Пример ее использования см. в листинге 16.8.
array imagecolorsforindex(resource image, integer index)
Функция imagecolorsforindex возвращает ассоциативный массив, содержащий элементы red, green и blue цвета для заданного индекса цветов. Пример ее использования см. в листинге 16.9.
resource imagecolorstotal(resource image)
Функция imagecolorstotal (листинг 16.10) возвращает количество цветов, имеющихся в заданном изображении.

| Листинг 16.10. Функции imagecolorstotal и imageistruecolor_
<?php
//попытка открыть изображение с подавлением сообщений об ошибках if(!($image = @imagecreatefrompng("leonatkinson.png")))
{
//ошибка, поэтому распечатать сообщение об ошибках print("Невозможно загрузить изображение!");
}
if(imageistruecolor($image))
{
print^'STO изображение находится в режиме реалистичного цветовоспроизведения.");
}
else
{
print("Всего цветов: " . imagecolorstotal($image));
}
?>