Для работы с графикой в php имеется библиотека gd. По умолчанию при установке интерпретатора данная библиотека отключена. Для того чтобы воспользоваться данной библиотекой необходимо в конфигурационном файле php.ini раскоментировать строку и перезапустить сервер.
Давайте рассмотрим принципы работы с графическими изображениями на конкретном примере. Напишем скрипт, который будет выполнять масштабирование изображений, то есть выводить на экран изображение с заданными размерами и вдобавок на выводимом изображении будет проставлять авторский знак.
Для выполнения поставленных задач напишем функцию. В качестве параметров она будет принимать имя файла с изображением, ширину изображения, высоту изображения. И выполнять функция будет следующие действия масштабирование изображения, проставление знака об авторском праве и вывод изображение на экран.
function resize_img($filename,$w,$h){
Для начала подкорректируем размеры нового изображения, чтобы не исказить пропорции в отмасштабированном изображении
|
|
$ratio=$w/$h;// отношение длины к ширине в новых размерах
$size_img=getimagesize($filename);// получаем в виде массива размеры изображения
$src_ratio=$size_img[0]/$size_img[1]; // отношение длины к ширине в реальном изображении
// изменяем размеры с целью соблюдения отношение длины к ширине в реальном изображении после масштабирования
if ($ratio<$src_ratio) $h=$w/$src_ratio;
else $w=$h*$src_ratio;
Теперь приступаем непосредственно к масштабированию. Для начала нам нужно создать пустое изображением и поместить туда оригинальное изображение из файла
$dest_img=imagecreatetruecolor($w,$h); // создаем пустое изображение
// получаем в память изображение в зависимости от типа файла
if($size_img[2]==2)$src_img=imagecreatefromjpeg($filename);
else if($size_img[2]==1) $src_img=imagecreatefromgif($filename);
Тп\еперь выполняем непосредственно масштабирование
//копируем в $dest_img отмасштабированное $src_img
if(!imagecopyresampled($dest_img,$src_img,0,0,0,0,$w,$h,$size_img[0],$size_img[1]))return false;
Далее проставим авторский знак
$color=imagecolorallocate($dest_img,0,0,0);//alpha($src_img,0,0,0,50);
imagestring($dest_img,1,$w/2,$h-15,"@Tanya",$color);
Теперь изображение готово и нам осталось вывести его на экран
//в зависимости от типа файла с изображением выводит изображение на экран
if($size_img[2]==2){
header("Content-type: image/jpeg");
imagejpeg($dest_img);
}
else if($size_img[2]==1){
header("Content-type: image/gif");
imagegif($dest_img);
}
В конце нужно не забыть освободить память, занятую под изображения. imagedestroy($dest_img);
imagedestroy($src_img);
}
Функция готова, теперь разберем, каким образом вставить масштабированное изображение в html-страницу.
resize_img($_GET['img'],$_GET['width'],$_GET['height']); //"../images/1.gif"