<MyRusakov.ru />

Создание крупного проекта на Java с нуля

Создание крупного проекта на Java с нуля

Данный курс научит Вас создавать крупные проекты на Java грамотно и быстро. В курсе Вы увидите создание большой и сложной программы на Java абсолютно с нуля.

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

В рамках упражнений курса Вы параллельно со мной будете создавать свою большую программу на Java, что даст Вам необходимую практику, после которой для Вас уже не будет разницы, какого размера создавать программы.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Рисование в PHP

Рисование в 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, 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, создавая свои графические шедевры!

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (14):

Alim_(I) Alim_(I) 26.06.2011 15:27:22

У меня почему-то вместо рисунка ошибка вышла: Warning: Cannot modify header information - headers already sent by (output started at Z:homeIAlim.ruwwwTest.php:231) in Z:homeIAlim.ruwwwTest.php on line 252 . А дальше сплошные иероглифы вот такие

Ответить

Admin Admin 26.06.2011 15:28:35

Вы просто скопировали код из примера? Или добавили что-то своё? Такая ошибка возникает, когда до header() вызывается echo или идёт HTML-код.

Ответить

Alim_(I) Alim_(I) 26.06.2011 15:35:05

Скопировал

Ответить

Admin Admin 26.06.2011 15:37:13

Тогда убедитесь, что нет никаких лишних пробелов, переходов на новые строки и прочего за пределами <?php ?>. Также если стоит кодировка UTF-8, то поставьте UTF-8 без BOM.

Ответить

Alim_(I) Alim_(I) 26.06.2011 15:52:52

Вот код: <?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); ?>

Ответить

Admin Admin 26.06.2011 15:54:35

Прекрасно всё рисуется. Читайте предыдущее сообщение.

Ответить

Alim_(I) Alim_(I) 26.06.2011 15:56:40

У меня всё та же ошибка стоит P.S. Проверял, обновилось

Ответить

Admin Admin 26.06.2011 16:01:15

И почему Вы обманываете, что просто скопировали код? Test.php:231 - это откуда? В данном коде нет 231-й строки.

Ответить

Alim_(I) Alim_(I) 26.06.2011 16:11:06

Я вставил этот код в файле в котором уже содержался контент

Ответить

Admin Admin 26.06.2011 16:12:47

Так я про это и спрашивал. Вы там используете небось целую кучу echo или вообще HTML-код. В следующий раз внимательнее читайте ответы.

Ответить

Alim_(I) Alim_(I) 26.06.2011 16:42:09

Там не было использованно ранее этого ни одного PHP, и JavaScript кода.

Ответить

Admin Admin 26.06.2011 16:44:28

Последний раз повторяю. Вы там использовали HTML - это ЗАПРЕЩЕНО (!!!) использовать до вызова функции header().

Ответить

irin irin 10.04.2014 18:25:34

Получается, что кроме изображения больше ничего не может быть в файле? Весь остальной контент игнорируется, выводится только изображение.

Ответить

goshikvia goshikvia 22.02.2018 09:04:13

Спасибо за статью! Объясняю для новичков - вы создаете КАРТИНКУ, т.е. отдельный файл с картинкой! Например урл картинки: http://мой-сайт/test.php Теперь хотите использовать эту картинку у себя в коде, для этого пользуетесь так: <img src="http://мой-сайт/test.php" alt="" />

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.