ТОП PHP скрипт сегодня: QR

Вы Тут:

Главная ›› Книги ›› PHP 5.0 для чайников ›› Функция imagecolorallocate()

Модификация изображений в языке PHP

После того как вы научились создавать и выводить изображение, можно приступать к рисованию. Сразу надо сказать, что приведенные примеры не претендуют на качественные дизайнерские работы, поэтому не стоит к ним относиться больше, чем к просто демонстрации возможностей функций библиотеки GD.

Рисование геометрических фигур

Разобьем наш черный квадрат двумя диагональными белыми линиями (листинг 13.5).

Листинг 13.5. Рисование квадрата с диагоналями

<?php
header("Content-type: image/png");
$image = imagecreatetruecolor (100, 100);

// определение цвета
$white = imagecolorallocate($image, 255, 255, 255);

// рисование линии
imageline($image, 0, 0, 99, 99, $white);
imageline($image, 0, 99, 99, 0, $white);

// вывод изображения
imagepng($image);

// удаление изображения из памяти
imagedestroy($image);
?>

Заметьте, что прежде чем рисовать линии, мы определили белый цвет с помощью функции imagecolorallocate(), в параметры которой входят не только числа, определяющие непосредственно цвет (от 0 до 255), но и идентификатор изображения. Эта функция возвращает целочисленное значение, которое будет определять цвет, используемый в изображении.

Непосредственная прорисовка линии осуществляется с помощью функции imageline(), где мы указываем изображение, координаты начала и конца линии и ее цвет. В итоге получается такая же картинка как на рис. 13.3.

Рисование геометрических фигур в PHP

Итак, прямые линии рисовать оказалось весьма просто, поэтому дальнейшие эксперименты можете проделывать самостоятельно. Перейдем к рисованию дуг, причем изобразим их на зеленом фоне (листинг 13.6.).

Листинг 13.6. Рисование дуг

<?php
header("Content-type: image/png");

// создание пустого изображения
$image = imagecreate (100, 100);

// цвет фона зеленый
$green = imagecolorallocate($image, 0, 128, 0);

// цвет белый
$white = imagecolorallocate($image, 255, 255, 255);

// рисование кривых линий
imagearc($image, 49, 49, 90, 90, 0, 360, $white);
imagearc($image, 49, 70, 50, 20, 0, 180, $white);
imagearc($image, 49, 49, 5, 20, 0, 360, $white);
imagearc($image, 29, 30, 20, 5, 0, 360, $white);
imagearc($image, 69, 30, 20, 5, 0, 360, $white);

// вывод изображения
imagepng($image);

// уничтожение изображения из памяти
imagedestroy($image);
?>

Заметьте, что в этом случае мы использовали функцию imagecreate(), которая создает пустое изображение. Первый определенный цвет при этом будет являться фоновым.

Функция imagearc() рисует часть эллипса. Сначала надо задать идентификатор изображения, затем координаты центра эллипса, его ширину и длину, начальный и конечный угол в градусах и, наконец, цвет линии. Результат выполнения этой программы представлен на рисунке ниже.

Рисование геометрических фигур в PHP

В библиотеке GD вы также найдете функции imagerectangle() и imagepolygon(), которые рисуют соответственно прямоугольник и многоугольник. Если вам потребуется не только начертить контуры этих фигур, но и закрасить их определенным цветом, то можно применить функции imagefilledrectangle() и imagefilledpolygon().

Разберем случай, когда требуется закрасить определенную область изображения. Для этого применяют функцию imagefill. Например, изменим цвет лица на предыдущей картинке (листинг 13.7).

Листинг 13.7. Заливка цветом

<?php
header("Content-type: image/png");
$image = imagecreate (100, 100);
$green = imagecolorallocate($image, 0, 128, 0);
$yellow = imagecolorallocate($image, 255, 255, 0);
$black = imagecolorallocate($image, 0, 0, 0);
imagearc($image, 49, 49, 90, 90, 0, 360, $black);
imagearc($image, 49, 70, 50, 20, 0, 180, $black);

// закрашиваем лицо в желтый цвет
imagefill ($image, 49, 49, $yellow);
imagearc($image, 49, 49, 5, 20, 0, 360, $black);
imagearc($image, 29, 30, 20, 5, 0, 360, $black);
imagearc($image, 69, 30, 20, 5, 0, 360, $black);

// вывод изображения
imagepng($image);

// уничтожение изображения из памяти
imagedestroy($image);
?>

Здесь мы не только изменили цвет лица, но и поменяли цвет линий.

Принцип работы функции imagefill() заключается в следующем. Ставится точка на изображении с координатами и цветом, указанными в качестве входного параметра, и закрашивается все вокруг нее до определенных границ.

Также существует функция imagefillborder(), которая не только осуществляет заливку области, но и позволяет провести ее границу определенным цветом.

Тратите время в бесконечном поиске, по всему интернету? Вы ищите, где можно заказать постоянную прописку в Московской области? Ваши поиски окончены. На сайте надежного адвоката, это можно сделать быстро, законно и недорого. Самое главное: вы получите гарантию на предоставленные услуги.