<MyRusakov.ru />

Финансовая грамотность от А до Я

Финансовая грамотность от А до Я

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

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

Помимо самого курса Вас ждёт ещё бесплатный ценный Бонус: «Ранний выход на пенсию». В рамках этого Бонуса Вы узнаете, какой должен быть капитал конкретно в Вашем случае, варианты его получения, а также какие есть стратегии вывода капитала на пенсии и где их можно протестировать.

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

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

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

Подписавшись по 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="" />

Ответить

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