Найти в Дзене
WebTechnology

Рисование в PHP

В прошлой статье мы с Вами познакомились с основными принципами создания изображений в PHP. А в этой статье мы с Вами будет рисовать различные графические примитивы в PHP: точку, линию, прямоугольник, дуги (в частном случае, эллипс и окружность) и многоугольники. Я решил, что самый простой способ усвоения данного материала - это привести относительно большой код, а затем подробнейшим образом его объяснить. Вдобавок, Вы можете его сразу же скопировать и вставить к себе в скрипт, посмотрев на результат. <?php
  $i = imageCreate(200, 300);
  $color = imageColorAllocate($i, 255, 255, 0);
  imageSetPixel($i, 30, 50, $color);
  $color = imageColorAllocate($i, 255, 0, 0);
  imageSetThickness($i, 3);
  imageLine($i, 10, 10, 100, 100, $color);
  imageSetThickness($i, 10);
  imageRectangle($i, 0, 0, imageSX($i), imageSY($i), $color);
  $color = imageColorAllocate($i, 255, 0, 0);
  imageFilledRectangle($i, 100, 200, 150, 240, $color);
  imageSetThickness($i, 2);
  imageArc($i, 50, 100, 40, 5

В прошлой статье мы с Вами познакомились с основными принципами создания изображений в PHP. А в этой статье мы с Вами будет рисовать различные графические примитивы в PHP: точку, линию, прямоугольник, дуги (в частном случае, эллипс и окружность) и многоугольники.

Я решил, что самый простой способ усвоения данного материала - это привести относительно большой код, а затем подробнейшим образом его объяснить. Вдобавок, Вы можете его сразу же скопировать и вставить к себе в скрипт, посмотрев на результат.

<?php
  $i = imageCreate(200, 300);
  $color = imageColorAllocate($i, 255, 255, 0);
  imageSetPixel($i, 30, 50, $color);

  $color = imageColorAllocate($i, 255, 0, 0);
  imageSetThickness($i, 3);
  imageLine($i, 10, 10, 100, 100, $color);

  imageSetThickness($i, 10);
  imageRectangle($i, 0, 0, imageSX($i), imageSY($i), $color);

  $color = imageColorAllocate($i, 255, 0, 0);
  imageFilledRectangle($i, 100, 200, 150, 240, $color);

  imageSetThickness($i, 2);
  imageArc($i, 50, 100, 40, 50, 90, 300, $color);

  $color = imageColorAllocate($i, 0, 255, 0);
  imagePolygon($i, array(10, 20, 120, 250, 190, 290, 100, 290, 10, 20), 4, $color);

Header("Content-type: image/jpeg");
  imageJpeg($i);
  imageDestroy($i);
?>

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

  • imageSetPixel(resource image, int x, int y, int color) - элементарная функция, знаний которой уже теоретически достаточно для рисования абсолютно любых изображений в PHP. Данная функция рисует пиксель с координатами x и y на изображении image с цветом color.
  • imageSetThickness(resource image, int thickness) - функция, устаналивающая толщину линий при рисовании прямоугольников, эллипсов, самих линий и других фигур в PHP.
  • imageLine(resource image, int x1, int y1, int x2, int y2, int color) - важнейшая функция, позволяющая рисовать линии на изображении image из начальной точки с координатами x1 и y1 в конечную точку с координатами x2 и y2. Линия будет нарисована цветом color.
  • imageRectangle(resource image, int x1, int y1, int x2, int y2, int color) - функция для рисования контура прямоугольника на изображении image с координатами левого верхнего угла x1 и y1 и с координатами правого нижнего угла - x2 и y2. Цвет контура прямоугольника будет color.
  • imageFilledRectangle(resource image, int x1, int y1, int x2, int y2, int color) - аналогична функции imageRectange(), однако, эта функция рисует не контур, а уже закрашенный прямоугольник.
  • imageArc(resource image, int cx, int cy, int w, int h, int s, int e, int color) - эта функция в общем случае рисует дугу эллипса на изображении image с координатами центра cx и cy. Ширина и высота эллипса - w и h соответственно. Начальный угол - s, конечный угол - e. Обратите внимание, что ноль находится на 3-х часах (кто помнит из тригонометрии единичную окружность и вспомнит, где ноль - сразу поймут, а другим лучше посмотреть результат выполнения данной функции и проаналазировать результат). Рисование дуги в PHP идёт против часовой стрелки (как и на единичной окружности в тригонометрии). Цвет дуги задаётся аргументов color. Если Вы укажите параметр s = 0, а e = 360, то у Вас получится эллипс. А если ещё при этом w = h, то получится окружность.
  • imagePolygon(resource image, array points, int num_points, int color) - рисует многоугольник на изображении image с координатми вершин, заданных в массиве points (x1, y1, x2, y2 и так далее) и общим количеством вершин, заданным num_points. Цвет линий задан аргументом color.

Все остальные функции, которые мы использовали в примере, были подробно описаны в статье: создание изображений в PHP.

Вот и всё! Дальше я рекомендую Вам внимательнейшим образом изучить пример выше, запустить его, поиграться с ним. И после этого Вы уже сможете легко рисовать в PHP, создавая свои графические шедевры!