Работа с графикой в PHP

Для работы с графикой в 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"



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: