Создание изображений в PHP
Когда я начинаю рассказывать о создании изображений в PHP, многие спрашивают: "А причём здесь PHP, ведь это работа скорее дизайнеров, нежели программистов?". И всега приходится объяснять, что PHP позволяет генерировать изображения. Ключевое слово - "генерировать". Какие могут быть примеры генерации изображений в PHP? Например, генерация графиков по заданным пользователям функциям, графики зависимости посещаемости сайта от времени, различные сервисы для рисования изображений прямо в браузере (разумеется, с последующим сохранением и загрузкой на сервере) и другие различные примеры. И в этой статье мы разберём основные принципы создания изображений в PHP.
Данная статья будет вводная, поэтому разберём с Вами определённый HelloWorld при работе с изображениями:
<?php
$i = imageCreate(200, 300);
$color = imageColorAllocate($i, 255, 255, 0);
imageFilledRectangle($i, 0, 0, imageSX($i), imageSY($i), $color);
Header("Content-type: image/jpeg");
imageJpeg($i);
imageDestroy($i);
?>
Здесь имеется много нюансов, поэтому подробным образом объясню каждую строку примера:
- imageCreate(int $width, int $height) - эта функция возвращает идентификатор изображения шириной width и высотой height. Если объяснить более понятным языков, то Вы этим действием создаёте "чистый холст для рисования".
- imageColorAllocate(resource $image, int $red, int $green, int $blue) - функция возвращает идентификатор цвета со следующими составляющими: красной (red), зелёной (green), синей (blue). В нашем случае мы взяли красную и зелёную составляющую по максимуму (255). В результате, был получен жёлтый цвет.
- imageFilledRectangle(resource $image, int $x1, int $y1, int $x2, int $y2, int $color) - эта функция рисует закрашенный прямоугольник на холсте image с координатами левого верхнего угла - x1 и y1, и координатами правого нижнего угла - x2 и y2, и цветом color.
- imageSX(resource $image) - возвращает ширину изображения image.
- imageSY(resource $image) - возвращает высоту изображения image.
- header($string) - функция, которая посылает заголовок серверу. В данном случае мы сообщили, что наш контент имеет тип "image/jpeg". Это очень важная строка, и из-за её отсутствия очень часто возникают ошибки.
- imageJpeg(resource $image) - эта функция "выбрасывает" изображение image на экран. То есть в предыдущей строке мы сообщили серверу, что сейчас будет отправлено изображение, а уже этой строкой отправили само изображение.
- imageDestroy(resource $image) - уничтожение изображения image. Всегда надо использовать эту функцию, чтобы освободить память на сервере.
Фактически, пример выше - это HelloWorld при работе с изображениями. Здесь каждая строчка очень важна и при удалении любой строки - работа, как минимум, станет непредсказуемой, а, скорее всего, скрипт перестанет работать. В следующей статье мы продолжим заниматься созданием изображением в PHP, поэтому советую подписаться на обновления, чтобы не пропустить её.
-
- Михаил Русаков
Комментарии (7):
Михаил, подскажите пожалуйста: стоит задача сделать красивые шрифты для кнопок на сайте, естественно они не стандартны; при этом при наведении курсора цвет их должен изменяться. Я нарисовал в CorelDraw нужные кнопки с прозрачным фоном, можно сохранить в любом векторном/растровом формате. Я так понимаю, что самый простой способ - это проеобразовать изображение в html или php код. Есть ли программы или сайты, где это можно сделать? Или, может быть, подскажете, как эту задачу реализовать, вся сложность в том, чтобы менять цвет при наведении курсора.
Ответить
Ничего преобразовывать не нужно, достаточно вставить через img, либо через свойство background в CSS.
Ответить
Здравствуйте, Михаил. 2 вопроса: 1. Как при рисовании таких изображений использовать данные из Mysql (т.е. например, использовать SELECT и подставлять необходимые данные). 2.Как сохранять такие изображения в MySQL (какого типа поля использовать, как сохранять, как вытаскивать, как пути указать). Спасибо
Ответить
Именно так и делается. Сначала селектом выводится то, что нужно, затем на основе этих данные рисуется картинка. А чтобы сохранять картинки в базу, нужно создать в таблице отдельно поле типа BLOB. Только в базе картинки обычно не хранят, кроме того в настройках сервера может быть запрещена работа с такими объемными файлами.
Ответить
как добавить иконку в оглавие страницы как у вас земной шар в оглавлении и "Создание изображений в php" заранее спасибо
Ответить
http://myrusakov.ru/ustanovka-favicon.html
Ответить
Михаил, подскажите пожалуйста, возможно ли средствами PHP создать изображение типа png/jpg, используя в качестве входных данных файл с координатами и определенным значением в этих координатах?
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.