Веб-программирование на стороне сервера
БГУИР (Белорусский государственный университет информатики и радиоэлектроники)
Контрольная
на тему: «Веб-программирование на стороне сервера»
по дисциплине: «Web-программирование»
2022
15.00 BYN
Веб-программирование на стороне сервера
Тип работы: Контрольная
Дисциплина: Web-программирование
Вариант: 16
Работа защищена на оценку "9" без доработок.
Уникальность свыше 40%.
Работа оформлена в соответствии с методическими указаниями учебного заведения.
Количество страниц - 18.
Поделиться
Вывод графических изображений средствами PHP
Функции GD и функции для работы с изображениями
Поддержка средств передачи изображений в протоколе HTTP
Рисование простых линий
Список используемых источников
Вывод графических изображений средствами PHP
Создание изображения. PHP позволяет динамически создавать изображения. Конечно, не имеет смысла рисовать на PHP какие-то сложные картинки. Для этого есть графические редакторы. Зато можно рисовать изображения, привязанные к контенту. Прежде всего, графики. Это основная задача, решаемая с помощью рисования. Хотя можно создавать и другие изображения.
Функции для создания изображения. Функция imageCreateTrueColor() создаёт новое изображение и возвращает дескриптор для дальнейшей работы с ним. На этом этапе картинка не отображается, она есть только в программе
ImageCreateTrueColor (ширина, высота)
При создании изображение представляет собой прямоугольник чёрного цвета.
$image = imageCreateTrueColor(200, 70);
В примере создано изображение размером 200 на 70 пикселей.
Следует отметить, что в PHP имена функций не чувствительны к регистру символов. И это можно использовать. В отличие от большинства функций PHP, в функциях рисования слова не разделены знаком нижнего подчёркивания. Чтобы визуально отделить слова друг от друга, можно начинать их с большой буквы. Так читать код программы будет гораздо проще.
Есть ещё функция imageCreate(). Она работает почти также, но создаёт не полноцветное, а палитровое изображение. В нём используются не все цвета, а только набор доступных цветов. Работать с ним неудобно.
Вывод картинки. Чтобы сервер правильно отправлял картинку, в скрипте должен быть заголовок ContentType с указанием MIME-типа контента. Напомню, что во всех примерах этого учебника во 2 строке предполагается установка типа text/html. Но для изображений он другой. В примерах этой главы ContentType будет указан.
Для вывода картинки в браузер или в файл используется несколько функций, каждая из которых создаёт изображение своего формата. Например imageJpeg() выводит картинку в формате jpeg.
imageJpeg (изображение, файл, качество)
Параметры:
изображение - дескриптор изображения
файл - путь к файлу. Если NULL или не указан, то изображение выводится в поток.
Функции GD и функции для работы с изображениями:
- gd_info — Вывод информации о текущей установленной GD библиотеке
- getimagesize — Получение размера изображения
- getimagesizefromstring — Получение размера изображения из строки данных
- image_type_to_extension — Получение расширения файла для типа изображения
- image_type_to_mime_type — Получение Mime-типа для типа изображения, возвращаемого функциями getimagesize, exif_read_data, exif_thumbnail, exif_imagetype
- image2wbmp — Выводит изображение в браузер или пишет в файл
- imageaffine — Вернуть изображение, содержащее аффинно-преобразованное изображение src, используя дополнительную область ограничения
- imageaffinematrixconcat — Конкатенирует две аффинные матрицы преобразования
- imageaffinematrixget — Получает матрицу аффинного преобразования
-imagealphablending — Задание режима сопряжения цветов для изображения
- imageantialias — Требуется ли применять функции сглаживания или нет
- imagearc — Рисование дуги
- imageavif — Выводит изображение в браузер или пишет в файл
- imagebmp — Вывести BMP-изображение в браузер или файл
- imagechar — Рисование символа по горизонтали
- imagecharup — Рисование символа вертикально
- imagecolorallocate — Создание цвета для изображения
- imagecolorallocatealpha — Создание цвета для изображения
- imagecolorat — Получение индекса цвета пиксела
- imagecolorclosest — Получение индекса цвета ближайшего к заданному
- imagecolorclosestalpha — Получение индекса цвета ближайшего к заданному с учётом прозрачности
- imagecolorclosesthwb — Получение индекса цвета, имеющего заданный тон, белизну и затемнение
- imagecolordeallocate — Разрыв ассоциации переменной с цветом для заданного изображения
- imagecolorexact — Получение индекса заданного цвета.
Поддержка средств передачи изображений в протоколе HTTP
Для того чтобы изображение могло быть представлено должным образом в браузере пользователя, необходимо указать, откуда должно поступить изображение и каков его формат. Поэтому, к сожалению, невозможно просто внедрить, например, вызов функции imageToPng() в создаваемый файл HTML и тем самым решить задачу вывода изображения. По сути, приходится чередовать код вывода изображений с кодом HTML, формируемым в сценарии PHP, и для этого можно воспользоваться одним из трех описанных ниже вариантов.
Создание полностраничных изображений
В виде изображения может быть оформлена вся формируемая страница. В этом случае необходимо передать заголовок HTTP, предшествующий данным изображения, и тем самым объявить, что дальше следует изображение определенного типа. Например, в конце сценария могут быть предусмотрены такие строки:
Код PHP
// ... код, в котором создается изображение и присваивается
// переменной $image
header("Content-type: image/png"); // Вывести заголовок в браузер
imagepng($image); // Передать данные самого изображения, преобразованного в формат PNG
imagedestroy($image); // Освободить ресурсы
Преимущество данного подхода состоит в том, что для передачи указаний о составе будущего изображения можно применять любую информацию, включая параметры POST. А его недостаток заключается в том, что результирующая страница не может содержать какого-либо обычного кода HTML. В действительности приходится даже следить за тем, чтобы перед заголовком и изображением в сценариях не передавался какой-либо текстовый вывод, поскольку такая ситуация равносильна преждевременной отправке информационного наполнения. В этом случае появляется сообщение об ошибке "Headers already sent...".
Рисование простых линий
Пример использования библиотеки gd: фрактальные изображения
Уже сложилась замечательная традиция украшать изложение темы вычерчивания линий, которая в принципе может показаться неинтересной, используя в качестве примера фракталы. Рассматриваемый ниже пример не только показывает, как создать сложное изображение программным путем, но и служит хорошей демонстрацией возможностей языка PHP. Дело в том, что массивы и нестрого заданные типы данных этого языка позволяют очень легко создавать сложные структуры данных, соответствующие фрактальным изображениям, не применяя большого количества объявлений.
Фрактал представляет собой геометрическую форму, подобную самой себе. Это означает, что части фрактала имеют форму, подобную всему фракталу, части этих частей также имеют подобную форму, и т.д.
Теоретически к идеальному фракталу можно применять операцию увеличения неограниченное количество раз и создавать все меньшие и меньшие части, продолжая обнаруживать повторение одних и тех же шаблонов. Но на практике фракталы, создаваемые с помощью компьютера, после использования некоторого ограниченного количества операций формирования частей вырождаются в нефрактальные формы, такие как обычные отрезки кривых и прямых.
1. Создание изображения [Электронный ресурс] / Режим доступа: https://basecourse.ru/php/createimage.php
2. Функции GD и функции для работы с изображениями [Электронный ресурс] / Режим доступа: https://www.php.net/manual/ru/ref.image.php
3. Работа c графической библиотекой PHP GD library. Часть первая [Электронный ресурс] / Режим доступа: https://ruseller.com/lessons.php?id=439
4. Создание графики [Электронный ресурс] / Режим доступа: https://addphp.ru/materials/base/1_23.php
Работа защищена на оценку "9" без доработок.
Уникальность свыше 40%.
Работа оформлена в соответствии с методическими указаниями учебного заведения.
Количество страниц - 18.
Не нашли нужную
готовую работу?
готовую работу?
Оставьте заявку, мы выполним индивидуальный заказ на лучших условиях
Заказ готовой работы
Заполните форму, и мы вышлем вам на e-mail инструкцию для оплаты