Эти уроки помогут вам разобраться с тем, как средствами PHP и библиотеки GD создавать разного рода изображения - счетчики, диаграммы, графики.
Я буду стараться публиковать новые уроки по понедельникам и постараюсь рассказать не только об основах, но о некоторых тонкостях, например о том как правильно узнать версию библиотеки GD, как рисовать сглаженные линии и многое другое.
Урок 1 - Создание изображения
Урок 2 - Рисование точки
Урок 3 - Рисование линии
Урок 4 - Рисование прямоугольника
Урок 5 - Рисование эллипса и круга
Урок 6 - Работа с полигонами
Урок 7 - Заливка замкнутой области
Урок 8 - Заливка сложной области
Урок 9 - Построение круговой диаграммы
Урок 10 - Построение гистограммы
Урок 11 - Построение графика
Урок 12 - Изменение размеров изображения
Урок 13 - Сглаживание изображения
Урок 14 - Как узнать версию библиотеки GD
Изображение создается с помощью функций imagecreate и imagecreatetruecolor.
Функция imagecreate создает изображение использующее палитру.
Каждой точке такого изображения присваивается номер цвета - от 0 до 255. Каждый цвет описывается в палитре. Таким образом изображение не может содержать более 256 цветов. В палитре каждый цвет описывается с помощью трех байт - один для красной компоненты (R), один для зеленой (G) и один для синей (B).
При использовании таких изображений целесообразно, в результате работы, генерировать GIF или PNG изображения.
Функция imagecreatetruecolor создает полноцветное изображение.
Каждая точка полноцветного изображения самостоятельно определяет свой цвет. Для хранения каждой точки используется как минимум три байта - один для красной компоненты (R), один для зеленой (G) и один для синей (B). Иногда добавляется четвертый байт. Он может быть добавлен как просто для повышения производительности, так и для определения прозрачности точки.
Такое изображение занимает больше места в памяти и в результате целесообразно генерировать JPEG или PNG изображение.
Обоим функциям передается два параметра - ширина и высота изображения. Обе функции возвращают идентификатор изображения:
Пример 1. Создание полноцветного изображения размером 320x240:
$img=imagecreatetruecolor(320,240);
Для получения результата необходимо сделать еще два действия - определить, как минимум, один цвет (в изображениях использующих палитру, первый цвет станет цветом фона) и запаковать и отправить изображение.
Выделение цветов
Для выделения цвета используется функция imagecolorallocate. В качестве параметров ей передается идентификатор изображения и три компоненты цвета (R,G и B). Значение каждой компоненты может изменятся от 0 до 255.
Пример 2. Выделение цветов
// Черный цвет
$color1=imageolorallocate($img,0,0,0);
// Белый цвет
$color2=imagecolorallocate($img,255,255,255);
// Зеленый цвет
$color3=imagecolorallocate($img,0,255,0);
Если вы привыкли задавать цвет так, как это делается в HTML, то можете использовать следующую функцию:
function htmlcolor($img,$color) {
sscanf($color, "%2x%2x%2x", $red, $green, $blue);
return ImageColorAllocate($img,$red,$green,$blue);
return($c);
}
$red=htmlcolor($img,"FF0000");
Сохранения изображения
После того, как изображение сформировано, необходимо передать его в понятном для браузера формате - GIF, JPEG или PNG. Для этого используются функции imagegif, imagejpeg и imagepng
Пример 3. Передача изображения в стандартный вывод в формате PNG
imagepng();
Если вы хотите сохранить изображение в файл, то должны передать его имя в качестве параметра функции, например:
Пример 4. Сохранение изображения в файл в формате JPEG
imagejpeg("newimage.jpg");
Примеры
Пример 5. Создания изображения, использующего палитру.
header("Content-type: image/png");
$img = imagecreate(320, 240);
$background_color = imagecolorallocate($img, 155, 255, 255);
$text_color = imagecolorallocate($img, 233, 14, 91);
imagestring($img, 2, 5, 5, "This is example", $text_color);
imagepng($img);
imagedestroy($img);
?>
Hint: Помните! Cкрипт генерирующий изображение не может выводить никаких текстовых сообщений. Не оставляйте пустых строк перед «» и после«?>»
Пример 6. Создания изображения, использующего палитру.
header ("Content-type: image/png");
$img = imagecreatetruecolor(320, 240);
$text_color = imagecolorallocate($img, 233, 14, 91);
imagestring($img, 2, 5, 5, "This is example", $text_color);
imagepng($img);
imagedestroy($img);
?>
|