Модификация изображений в php

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

Рисование геометрических фигур

Разобьем наш черный квадрат двумя диагональными белыми линиями.

Рисование квадрата с диагоналями

1
2
3
4
5
6
7
8
9
10
11
12
<?php
header("Content-type:  image/png");
$image = imagecreatetruecolor (100, 100);
// определение цвета
$white = imagecolorallocate($image, 255, 255, 255);
// рисование линии
imageline($image, 0, 0, 99, 99, $white);
imageline($image, 0, 99, 99, 0, $white);
// вывод изображения imagepng($image);
// удаление изображения из памяти
imagedest roy($image);
?>

Заметьте, что прежде чем рисовать линии, мы определили белый цвет с помощью функции imagecolorallocate(), в параметры которой входят не только числа, определяющие непосредственно цвет (от 0 до 255), но и идентификатор изображения. Эта функция возвращает целочисленное значение, которое будет определять цвет, используемый в изображении.

Непосредственная прорисовка линии осуществляется с помощью функции imageline(), где мы указываем изображение, координаты начала и конца линии и ее цвет.

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

Рисование дуг

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?phр
header("Content-type: image/png");
// создание пустого изображения
Simage = imagecreate (100, 100);
// цвет фона зеленый
Sgreen = imagecolorallocate($image, 0, 128, 0);
// цвет белый
Swhite = imagecolorallocate($image, 255, 255, 255);
// рисование кривых линий
imagearc($image, 49, 49, 90, 90, 0, 360, $white);
imagearc($image, 49, 70, 50, 20, 0, 180, Swhite);
imagearc($image, 49, 49, 5, 20, 0, 360, Swhite);
imagearc($image, 29, 30, 20, 5, 0, 360, Swhite);
imagearc($image, 69, 30, 20, 5, 0, 360, Swhite);
// вывод изображения
imagepng(Simage);
// уничтожение изображения из памяти
imagedestroy($image);
?>

Заметьте, что в этом случае мы использовали функцию imagecreate(), которая создает пустое изображение. Первый определенный цвет при этом будет являться фоновым.

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

В библиотеке GD вы также найдете функции imagerectangle() и imagepolygon(), которые рисуют соответственно прямоугольник и многоугольник. Если вам потребуется не только начертить контуры этих фигур, но и закрасить их определенным цветом, то можно применить функции imagefilledrectangle() и imagefilledpolygon().

Разберем случай, когда требуется закрасить определенную область изображения. Для этого применяют функцию imagefill. Например, изменим цвет лица на предыдущей картинке.

Заливка цветом

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
header("Content-type:  image/png");
$image = imagecreate (100, 100);
$green = imagecolorallocate($image, 0, 128, 0);
$yellow = imagecolorallocate($image, 255, 255, 0);
$black = imagecolorallocate($image, 0, 0, 0);
imagearc($image, 49, 49, 90, 90, 0, 360, $black);
imagearc($image, 49, 70, 50, 20, 0, 180, $black);
// закрашиваем лицо в желтый цвет
imagefill ($image, 49, 49, Syellow);
imagearc($image, 49, 49, 5, 20, 0, 360, $black);
imagearc($image, 29, 30, 20, 5, 0, 360, $black);
imagearc($image, 69, 30, 20, 5, 0, 360, $black);
// вывод изображения
imagepng($image);
// уничтожение изображения из памяти
imagedestroy($image);
?>

Здесь мы не только изменили цвет лица, но и поменяли цвет линий.

Принцип работы функции imagefill() заключается в следующем. Ставится точка на изображении с координатами и цветом, указанными в качестве входного параметра, и закрашивается все вокруг нее до определенных границ.

Также существует функция imagefillborder(), которая не только осуществляет заливку области, но и позволяет провести ее границу определенным цветом.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100