Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
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
 
<<-[Весь Текст]
Страница: из 287
 <<-