ВСЕ СТАТЬИ
Блог начинающего программиста
Регистрация

Изображение, цвет средствами PHP и HTML при выполнении заданий

Опубликовано:

PHP создает и управляет изображениями разных форматов. Наиболее часто используются форматы jpg, gif, png. Становится популярным в вебе svg. PHP способен выводить потоковое изображение в браузер. Для этого необходима графическая библиотека GD library. Проверить, если ли доступ к ней, можно при помощи кода.

>
<?php echo phpinfo(); ?>

Файл с ним надо разместить на сервере. Открыть его в браузере, и в открывшемся списке найти секцию GD. Если она есть, значит библиотека подключена.

В PHP есть много Функций для работы с изображениями. Функция resource imagecreatetruecolor ( int $width , int $height ) в качестве аргументов принимает ширину и длину изображения. Возвращает результат с данными ресурсного типа, то есть работа с ним происходит в памяти.

Задание:

Нарисовать человечка. Без фанатизма.

Выполнение:


<?php
$im = imagecreatetruecolor(800, 800);
$c = imagecolorallocate($im, 120, 220, 150); //Создание цвета изображения
imageArc ($im, 400, 100, 150, 170, 0, 360, $c);
imageArc ($im, 400, 370, 250, 370, 0, 360, $c);
imageLine ($im, 300, 262, 150, 200, $c); //левая рука
imageLine ($im, 500, 262, 650, 200, $c); //правая рука
imageLine ($im, 320, 512, 300, 750, $c); //левая нога
imageLine ($im, 480, 512, 500, 750, $c); //правая нога
imagearc ($im, 400, 150, 30, 15, 0, 180, $c); //рот
imageFilledRectangle ($im, 330, 250, 400, 350, $c);//карман
imageRectangle ($im, 390, 90, 410, 130, $c);//нос
//снегопад
for ($i = 0; $i < 1000; $i++)
{
    $x = mt_rand (0, imageSX($im));//imageSX - Получение ширины изображения
    $y = mt_rand (-800, imageSY($im));
    imageSetPixel ($im, $x, $y, $c);//рисует точку (пиксель) на заданных координатах.
}

Посмотреть результат выполнения скрипта в браузере.

рисунок человечек

Изображение человечка уменьшено

Следующее задание:

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

Реализация:

Понимание скрипта полезно для создания простейшей каптчи. Создается файл html под названием imo.html c формой для ввода текста и отправки методом post на обработчик php под названием iso.php. Файл iso.php средствами php под управлением созданного скрипта генерирует текст, который был введен в форме файла imo.html. И если задать в этом файле редирект на предыдущую страницу, то откроется страница с формой и рисунком.

Файл imo.html.


<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="utf-8">
        <title>Изображения</title>
    </head>
    <body>
        <form action="iso.php" method="post">
            <input type="text" name="x">
            <input type="submit">
        </form>
        <br />
        <img src="iso.png" alt="iso">
    </body>
</html> 

Файл обработчик iso.php.


<?php
$x = $_POST['x'];
$im = imageCreateTrueColor (190, 50);
$c = imageColorAllocate ($im, 255, 255, 255);
//$x = iconv ("CP1251", "UTF-8", $x); //Преобразует набор символов строки x из кодировки CP1251 в UTF-8.

imageTtfText ($im, 20, 0, 10, 30, $c, "verdana.ttf", $x);//Рисование текста на изображении шрифтом TrueType verdana.ttf  
header ("Content-type: image/png");
imagePng ($im, "iso.png");
imageDestroy ($im);

header("Location: ".$_SERVER['HTTP_REFERER']); //редирект на предыдущую страницу imo.html
?>

Результат выполнения задания с изображением

Посмотреть результат выполнения скрипта про Изображения в браузере можно в новом окне.

Примечание

Для правильного функционирования этого скрипта необходима следующая запись в файле .htaccess


## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/png A0
</IfModule>

Это связано с настройкой браузерного кэширования.

Если запись настройки браузерного кэширования будет, например, такой:


ExpiresByType image/png "access 1 year"

То в браузере у клиента обработчик iso.php сработает не корректно. Для получения правильного результата потребуется нажать комбинацию клавиш Ctrl+F5.


Комментарии

Пока комментарий нет

Оставить свой комментарий:

Зарегистрироваться
Имя:
Электронная почта:
Текст комментария:
Введите код с картинки:
картинка