<?php
/*
$x_oи$y_o-
координаты
левоговерхнего
углавыходного
изображенияна
исходном
$w_oиh_o-
ширинаивысота
выходного
изображения
*/
functioncrop
($image,$x_o,
$y_o,$w_o,
$h_o){
if(($x_o<0)
||($y_o<0)||
($w_o<0)||
($h_o<0)){
echo
"Некорректные
входные
параметры";
returnfalse;
}
list($w_i,$h_i,
$type)=
getimagesize
($image);//
Получаемразмеры
итип
изображения
(число)
$types=array
("","gif",
"jpeg",
"png");//
Массивстипами
изображений
$ext=$types
[$type];//Зная
"числовой"тип
изображения,
узнаёмназвание
типа
if($ext){
$func=
'imagecreatefrom'.
$ext;//
Получаем
название
функции,
соответствующую
типу,для
создания
изображения
$img_i=$func
($image);//
Создаём
дескриптордля
работыс
исходным
изображением
}else{
echo
'Некорректное
изображение';//
Выводимошибку,
еслиформат
изображения
недопустимый
returnfalse;
}
if($x_o+$w_o
>$w_i)$w_o=
$w_i-$x_o;//
Еслиширина
выходного
изображения
большеисходного
(сучётомx_o),
тоуменьшаемеё
if($y_o+$h_o
>$h_i)$h_o=
$h_i-$y_o;//
Есливысота
выходного
изображения
большеисходного
(сучётомy_o),
тоуменьшаемеё
$img_o=
imagecreatetruecolor
($w_o,$h_o);//
Создаём
дескриптордля
выходного
изображения
imagecopy
($img_o,$img_i,
0,0,$x_o,
$y_o,$w_o,
$h_o);//
Переносимчасть
изображенияиз
исходногов
выходное
$func='image'.
$ext;//
Получаемфункция
длясохранения
результата
return$func
($img_o,
$image);//
Сохраняем
изображениев
тотжефайл,что
иисходное,
возвращая
результатэтой
операции
}
crop
("image.jpg",
100,100,200,
50);//Вызываем
функцию
?>