PHP библиотека GD, используется для работы с двухмерной графикой. Сейчас, из-за проблем с авторским правом, начиная с GD версии 1.6 — была убрана поддержка GIF, заменой послужили аналогичные функции PNG (Но всё же никто не может помешать найти старые версии, которые лежат на многих серверах и их можно свободно скачать).
Cкачать GD PHP можно .
Чтобы узнать, поддерживается ли GD в системе, попробуйте:
if(function_exists('imagetypes')) echo 'GD is loaded'; else echo 'GD is not loaded';
Для просмотра полного списка функций этой библиотеки можете перейти по этой .
И так, приступим. Рассмотрим одну из часто встречающихся задач — изменение размера картинки php.
Допустим, вам нужно добавить на ваш сайт изображение (с размером 1024×768 ):
… в тег img
<img src="путь к картинке" alt="пингвины" width="200" height="200" />
В результате мы получим вот это:
Картинка деформировалась, так как ширина картинки не равна ее высоте .
И так, приступим к написанию кода, для избежания этой проблемы.
<?php //создадим функцию create_image //с входными параметрами $path_source - путь к картинке , $max_x - ширина нашей будущей картинки , $max_y - высота function create_image($path_source,$max_x, $max_y) { list($width, $height, $type, $attr) = getimagesize($path_source); //запишем результат полученной картинки if ($type == IMAGETYPE_GIF) $source_name=imagecreatefromgif($path_source); else if ($type == IMAGETYPE_JPEG) $source_name=imagecreatefromjpeg($path_source); else if ($type == IMAGETYPE_PNG){ $source_name=imagecreatefrompng($path_source); } else return; // следующий код проверяет, чтобы // при изменении сохранилась правильная пропорция, // если ширина больше высоты или высота больше ширины картинки if ($width > $height) { $xs=$max_x; $ys=$max_x/($width/$height); } else { $ys=$max_y; $xs=$max_y/($height/$width); } // далее создаем полотно с размерами: ширина - $max_x, высота - $max_y на котором будем рисовать нашу картинку $small = imagecreatetruecolor ($max_x, $max_y); // назначаем фоновый цвет полотну (в нашем случае - это белый) $white = imagecolorallocate($small, 255, 255, 255); imagefill($small, 0, 0, $white); // следующий код копирует и позицианирует картинку в центре if ($width > $height) { $res = imagecopyresampled($small,$source_name,0,($max_y-$ys)/2,0,0,$xs,$ys,$width,$height); } else { $res = imagecopyresampled($small,$source_name,($max_x-$xs)/2,0,0,0,$xs,$ys,$width,$height); } // уничтожаем нашу картинку imagedestroy($source_name); // сохраняем наш результат $small в $path_source (перезаписываем текущую картинку) imagejpeg($small,$path_source); imagedestroy($small); } create_image("Penguins.jpg",200,200); ?>
В результате мы получим :
На этом примере мы рассмотрели изменение размера картинки в php, думаю, что здесь нет ничего сложного и теперь вы без проблем сможете изменять размеры ваших изображений.
Получайте новые статьи блога прямо себе на почту
Прикольно вышло,спс автору за статью!!!
мне очень приятно, что вам понравилась. спасибо.
У меня проблем с картинками не было, но все равно спасибо.
Это не для готовых движков типа WordPress, Joomla и т.д.
Спасибо, но в конце наверное нужно создавать не только imagejpeg()
а через условие и imagegif(), imagePng()