| |
$s,int $e,int $c)
Функция imageArc() рисует в изображении $im дугу сектора эллипса от угла $s до
$e (углы указываются в градусах против часовой стрелки, отсчитываемых от гори-
зонтали). Эллипс рисуется такого размера, чтобы вписываться в прямоугольник
($x,$y,$w,$h), где $w и $h задают его ширину и высоту, а $x и $y — координаты
ле-
вого верхнего угла. Сама фигура не закрашивается, обводится только ее контур,
для
чего используется цвет $c.
Закраска произвольной области
int imageFill(int $im, int $x, int $y, int $col)
Функция imageFill() выполняет сплошную заливку одноцветной области, содер-
жащей точку с координатами ($x,$y) цветом $col. Нужно заметить, что современные
алгоритмы заполнения работают довольно эффективно, так что не стоит особо забо-
титься о скорости ее работы. Итак, будут закрашены только те точки, к которым
можно проложить "одноцветный сильно связанный путь" из точки ($x,$y).
Две точки называются связанными сильно, если у них совпадает по крайней
мере одна координата, а по другой координате они отличаются не более, чем
на 1 в любую сторону.
int imageFillToBorder(int $im, int $x, int $y, int $border, int $col)
Эта функция очень похожа на imageFill(), только она выполняет закраску не од-
ноцветных точек, а любых, но до тех пор, пока не будет достигнута граница цвета
Глава 23. Работа с изображениями 325
$border. Под границей здесь понимается последовательность слабо связанных то-
чек.
Две точки называются слабо связанными, если каждая их координата отлича-
ется от другой не более, чем на 1 в любом направлении. Очевидно, всякая
сильная связь является также и слабой.
Многоугольники
int imagePolygon(int $im, list $points, int $num_points, int $col)
Эта функция рисует в изображении $im многоугольник, заданный своими вершина-
ми. Координаты углов передаются в массиве-списке $points, причем
$points[0]=x0, $points[1]=y0, $points[2]=x1, $points[3]=y1, и т. д. Пара-
метр $num_points указывает общее число вершин — на тот случай, если в массиве
их больше, чем нужно нарисовать. Многоугольник не закрашивается — только рису-
ется его граница цветом $col.
int imageFilledPolygon(int $im, list $points, int $num_points, int $col)
Функция imageFilledPolygon() делает практически то же самое, что и
imagePolygon(), за исключением одного очень важного свойства: полученный мно-
гоугольник целиком заливается цветом $col. При этом правильно обрабатываются
вогнутые части фигуры, если она не выпукла.
Работа с пикселами
int imageSetPixel(int $im, int $x, int $y, int $col)
Эта функция практически не интересна, т. к. выводит всего один пиксел цвета
$col в
изображении $im, расположенный в точке ($x,$y). Не думаю, чтобы с помощью нее
можно было закрасить хоть какую-нибудь сложную фигуру, потому что, как мы зна-
ем, PHP довольно медленно работает с длинными циклами, а значит, даже рисование
обычной линии с использованием этой функции будет очень дорогим занятием.
int imageColorAt(int $im, int $x, int $y)
В противоположность своему антиподу — функции imageSetPixel() — функция
imageColorAt() не рисует, а возвращает цвет точки, расположенной на координа-
тах ($x,$y). Возвращается идентификатор цвета, а не его RGB-представление.
Функцию удобно использовать, опять же, для определения, какой цвет в картинке
должен быть прозрачным. Например, все у той же птички на кислотно-зеленом фоне
мы достоверно знаем, что прозрачный цвет точно приходится на точку с
координата-
ми (0,0). Таким образом, теперь мы сможем в любой момент сменить цвет фона на
Часть IV. Стандартные функции PHP 326
мертвенно-голубой (который тоже у реальной птицы вряд ли встретится), и
програм-
ма все равно будет работать правильно.
Работа с фиксированными шрифтами
Библиотека GD имеет некоторые возможности по работе с текстом и шрифтами.
Шрифты представляют собой специальные ресурсы, имеющие собственный иденти-
фикатор, и чаще всего загружаемые из файла или встроенные в GD. Каждый символ
шрифта может быть отображен лишь в моноцветном режиме, т. е. "рисованные" сим-
волы не поддерживаются. Встроенных шрифтов всего 5 (идентификаторы от 1 до 5),
чаще всего в них входят моноширинные символы разных размеров. Остальные
шрифты должны быть предварительно загружены.
Загрузка шрифта
int imageLoadFont(string $file)
Функция загружает файл шрифтов и возвращает иденти
|
|