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));
}
?>
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Обработка изображений и графики. Часть Пятая.
25-02-2015
<< Предыдущая статья | Следующая статья >> |
PHP. Обработка изображений и графики. Часть Четвёртая. | PHP. Обработка изображений и графики. Часть Шестая. |