Для того чтобы на PHP можно было обрабатывать рисунки, нужна библиотека GD. У большинства хостинговых компаний она уже установлена, и ее можно использовать. Если же у вас не подключена эта библиотека, то в интернете легко можно прочитать, как ее установить.
Очень часто бывает необходимость уменьшать рисунки, например, при получении изображений от пользователей сайта. Сделать уменьшение рисунков нам поможет PHP. Ниже приведена функция уменьшения рисунков следующих форматов: jpg, gif и png. Функции нужно передать имя исходного рисунка, имя нового рисунка, максимальную ширину, максимальную высоту и качество в процентах для изображений формата jpg. Функция вернет в случае успешной обработки изображения массив с полученными размерами изображения, в случае не успешной обработки изображения функция вернет значение false. Если размеры изображения будут больше указанных, то скрипт уменьшит пропорционально рисунок, чтобы ни одна сторона рисунка не была больше заданных размеров. При этом исходное изображение изменяться не будет, будет создан новый рисунок. Если же размеры исходного рисунка не будут превышать заданных размеров, то изображение просто будет скопировано без всяких изменений.
function preob_img($img_file,$img_new,$max_width,$max_height,$quality=85)
{
//$img_file - имя исходного рисунка
//$img_new - имя нового рисунка
//$max_width - максимальная ширина рисунка
//$max_height - максимальная высота рисунка
//$quality - качество в процентах для рисунков в формате jpg, по умолчанию равно 85
$prop_form=$max_width/$max_height;
//проверяем и преобразуем, если надо рисунок
$on_img=false;
$exp=strtolower(substr($img_new,-3,3));
$exp_to_jpeg=strtolower(substr($img_new,-4,4));
$d_img=false;
$is_exp="";
$img_width=0;
$img_height=0;
if ($exp=="jpg" || $exp_to_jpeg=="jpeg")
{
$d_img=ImageCreateFromJpeg($img_file);
$is_exp="jpg";
}
elseif ($exp=="gif")
{
$d_img=ImageCreateFromGif($img_file);
$is_exp="gif";
}
elseif ($exp=="png")
{
$d_img=ImageCreateFromPng($img_file);
$is_exp="png";
}
if (!$d_img) return (false);
$width=ImageSX($d_img);
$height=ImageSY($d_img);
$prop=$width/$height;
$on_edit=false;
$img_width=$width;
$img_height=$height;
if ($prop>=$prop_form)
{
if ($width>$max_width)
{
$k=$width/$max_width;
$new_width=$max_width;
$new_height=floor($height/$k);
$on_edit=true;
$img_width=$new_width;
$img_height=$new_height;
}
}
else
{
if ($height>$max_height)
{
$k=$height/$max_height;
$new_height=$max_height;
$new_width=floor($width/$k);
$on_edit=true;
$img_width=$new_width;
$img_height=$new_height;
}
}
if ($on_edit)
{
$d_new_img=imagecreatetruecolor($new_width,$new_height);
imagecopyresampled($d_new_img, $d_img,0,0,0,0,$new_width,$new_height,$width,$height);
if ($is_exp=="jpg")
{
imagejpeg ($d_new_img,$img_new,$quality);
$on_img=true;
}
elseif ($is_exp=="gif")
{
imagegif($d_new_img,$img_new);
$on_img=true;
}
elseif ($is_exp=="png")
{
imagepng($d_new_img,$img_new);
$on_img=true;
}
}
else
{
if (copy($img_file,$img_new))
{
$on_img=true;
}
}
return ($on_img?array($img_width,$img_height):false);
}
Пример использования функции уменьшения изображения.
$name_image="/home/login/web/images/ris.jpg";
$name_new_image="/home/login/web/images/small_ris.jpg ";
if (preob_img($name_image,$name_new_image, 200,300,85))
{
echo ("Изображение успешно обработано!");
}
else
{
echo ("Произошла ошибка при обработки рисунка!");
}
В этом примере мы задали максимальную ширину рисунка 200px и максимальную высоту 300px. Если изображение будет иметь размеры больше этих величин, то будет создано изображение с меньшими размерами.