| |
H)
Эта функция — одна из самых мощных и универсальных, хотя и выглядит просто
ужасно. С помощью нее можно копировать изображения (или их участки), переме-
щать и масштабировать их…. Пожалуй, 10 параметров для функции — чересчур, но
разработчики PHP пошли таким путем. Что же, это их право...
Итак, $dst_im задает идентификатор изображения, в который будет помещен ре-
зультат работы функции. Это изображение должно уже быть создано или загружено и
иметь надлежащие размеры. Соответственно, $src_im — идентификатор изображе-
Глава 23. Работа с изображениями 323
ния, над которым проводится работа. Впрочем, $src_im и $dst_im могут и совпа-
дать.
Параметры ($srcX, $srcY, $srcW, $srcH) (обратите внимание на то, что они следу-
ют при вызове функции не подряд!) задают область внутри исходного изображения,
над которой будет осуществлена операция — соответственно, координаты ее
верхнего
левого угла, ширину и высоту.
Наконец, четверка ($dstX, $dstY, $dstW, $dstH) задает то место на изображении
$dst_im, в которое будет "втиснут" указанный в предыдущей четверке прямоуголь-
ник. Заметьте, что, если ширина или высота двух прямоугольников не совпадают,
то
картинка автоматически будет нужным образом растянута или сжата.
Таким образом, с помощью функции imageCopyResized() мы можем:
r копировать изображения;
r копировать участки изображений;
r масштабировать участки изображений;
r копировать и масштабировать участки изображения в пределах одной картинки.
В последнем случае возникают некоторые сложности, а именно, когда тот блок, из
которого производится копирование, частично налагается на место, куда он должен
быть перемещен. Убедиться в этом проще всего экспериментальным путем. Почему
разработчики GD не предусмотрели средств, которые бы корректно работали и в
этом
случае, не совсем ясно.
Прямоугольники
int imageFilledRectangle(int $im,int $x1,int $y1,int $x2,int $y2,int $c)
Название этой функции говорит за себя: она рисует закрашенный прямоугольник в
изображении, заданном идентификатором $im, цветом $col (полученным, например,
при помощи функции imageColorAllocate()). Координаты ($x1,$y1) и ($x2,$y2)
задают координаты верхнего левого и правого нижнего углов, соответственно
(отсчет,
как обычно, начинается с левого верхнего угла и идет слева направо и сверху
вниз).
Эта функция часто применяется для того, чтобы целиком закрасить только что соз-
данный рисунок, например, прозрачным цветом:
$i=imageCreate(100,100);
$c=imageColorAllocate($i,0,0,0);
imageColorTransparent($i,$c);
imageFilledRectangle($i,0,0,imageSX($i)-1,imageSY($i)-1,$c);
// дальше работаем с изначально прозрачным фоном
int imageRectangle(int $im, int $x1, int $y1, int $x2, int $y2, int $col)
Функция imageRectangle() рисует в изображении прямоугольник с границей тол-
щиной 1 пиксел цветом $col. Параметры задаются так же, как и в функции
imageFilledRectangle().
Часть IV. Стандартные функции PHP 324
Линии
int imageLine(int $im, int $x1, int $y1, int $x2, int $y2, int $col)
Эта функция рисует сплошную тонкую линию в изображении $im, проходящую через
точки ($x1,$y1) и ($x2,$y2), цветом $col. Линия получается слабо связанной (про
связность см. чуть ниже).
int imageDashedLline(int $im,int $x1,int $y1,int $x2,int $y2,int $col)
Функция imageDashedLine() работает почти так же, как и imageLine(), только
рисует не сплошную, а пунктирную линию. К сожалению, ни размер, ни шаг штрихов
задавать нельзя, так что, если вам обязательно нужна пунктирная линия
произволь-
ной фактуры, придется заняться математическими расчетами и использовать
imageLine().
Дуга сектора
int imageArc(int $im,int $cx,int $cy,int $w,int $h,int
|
|