Оглавление

28.5. Работа с цветом

Добавить новый цвет в палитру позволяет функция imagecolorallocate():

imagecolorallocate(<Идентификатор>, <Доля красного>, <Доля зеленого>,  <Доля синего>);
Например:

$white = imagecolorallocate($img, 255, 255, 255);


Функция  imagecolordeallocate()  уничтожает  объект  цвета,  созданный функцией imagecolorallocate().
imagecolordeallocate(<Идентификатор>, <Цвет>);
С  помощью  функции  imagecolortransparent()  можно  сделать  определенный цвет палитры прозрачным:
imagecolortransparent(<Идентификатор>, <Цвет>)
Например:

$white = imagecolorallocate($img, 255, 255, 255);
imagecolortransparent($img, $white);


Функция imagecolorclosest() возвращает ближайший к указанному цвет из имеющихся в палитре:

imagecolorclosest(<Идентификатор>, <Доля красного>, <Доля зеленого>,  <Доля синего>);
Например:

$white = imagecolorclosest($img, 255, 255, 255);


Функция imagecolorat() возвращает цвет указанной точки изображения:
imagecolorat(<Идентификатор>, <X>, <Y>);

 
Координаты точки отсчитываются от верхнего левого угла.

 
Функция  imagecolorsforindex()  возвращает  ассоциативный  массив  значений RGB-составляющих для указанного идентификатора цвета:
imagecolorsforindex(<Идентификатор изображения>, <Цвет>);

 

В качестве примера  выведем числовые  значения для цвета указанной точки изображения:

$img = imagecreatefromgif('banner.gif');
$color = imagecolorat($img, 20, 20);
$rgb = imagecolorsforindex($img, $color);
echo '<pre>';
print_r($rgb);
echo '</pre>';
imagedestroy($img);


Выведет примерно:
Array
(
    [red] => 255
    [green] => 255
    [blue] => 255
    [alpha] => 0
)

 

Функция imagefill() позволяет закрасить область одного цвета другим цветом. Достаточно указать координаты точки и новый цвет:
imagefill(<Идентификатор>, <X>, <Y>, <Цвет>);
Функция  imagefilltoborder()  позволяет  закрасить  область,  ограниченную точками  какого-то  цвета,  другим  цветом.  Достаточно  указать  координаты точки, цвет границы и цвет закраски:
imagefilltoborder(<Идентификатор>, <X>, <Y>, <Цвет границы>, <Цвет>);


Функция imagecolorstotal()  возвращает  количество цветов  в палитре изображения:
imagecolorstotal(<Идентификатор>);
Например:

$var = imagecolorstotal($img);


Для примера напишем скрипт image.php (листинг 65), в котором создается новое изображение 88×31 красного цвета и выводится в Web-браузер.

 
Листинг 65. Файл image.php для вывода динамически созданного  изображения

<?php
header("Content-type: image/png");
$img = @imagecreate(88, 31);
$background_color = imagecolorallocate($img, 255, 0, 0);
imagefill($img, 0, 0, $background_color);
imagepng($img);
imagedestroy($img);
?>

 

 

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити