Наступил момент, когда нам требуется рисовать более сложные фигуры с помощью gd библиотеки в php. Прямоугольники часто используются для создания таблиц и графиков, а круги для диаграмм. Научимся их создавать.
Давайте сначала рассмотрим php код, а затем разберем его синтаксис:
<?php header("Content-type: image/png; charset=utf-8");
//создаем поле, где рисовать
$img = imagecreate (800, 600);
$white = imagecolorallocate($img, 255, 255, 255);
$green = imagecolorallocate($img, 30, 180, 155);
$gray = imagecolorallocate($img, 130, 120, 135);
$pink = imagecolorallocate($img, 255, 128, 255);
// Рисование прямоугольника
imagerectangle($img,20,60,200,180,$green);
imagefilledrectangle($img,220,60,400,180,$green);
imagefilledrectangle($img, 420, 60, 600, 180, $gray); imagerectangle($img,420, 60, 600, 180,$green);
// Рисование эллипса и круга
imageellipse($img,60,360,40,80,$green);
imageellipse($img,160,360,60,60,$green);
imagefilledellipse($img,320,360,150,150,$pink);
imagepng($img);
imagedestroy($img);
?>
Чтобы нарисовать прямоугольник используется функция imagerectangle(), например: imagerectangle($img,20,60,200,180,$green); Здесь:
- $img - рабочая область изображения
- 20 и 60 - x1, y1 - верхний левый угол
- 200 и 180 - x2, y2 - нижний правый угол
- $green - цвет линии
Чтобы нарисовать прямоугольник с заливкой используется функция imagefilledrectangle(). Ее отличие от предыдущей в том, что параметр цвета отвечает за заливку. Но если вам нужно сделать прямоугольник с рамкой и цветной заливкой, то можно использовать комбинацию обоих прямоугольников методом наложения, как в коде. У этих прямоугольников одинаковые координаты, поэтому они накладываются друг на друга.
Чтобы рисовать окружности и эллипсы используются функции imageellipse() и imagefilledellipse(). Синтаксис переменных такой же, как и для прямоугольников - один без заливки, другой с заливкой.
Также вам может понадобится создание сложных фигур - полигонов. Ими могут быть треугольники, трапеции, звезды. Выполняется за счет функции imagepolygon() в массив которой передаются координаты каждой точки x и y. Пример:
imagepolygon($img, Array( 100,100, 200,200, 300,190, 410,160), 4, $pink);
Здесь вы видите массив точек X1, Y1, X2, Y2, X3, X4, Y4, а число 4 означает их количество.
В следующем материале рассмотрим принцип создания водяного знака.