{lang: ‘ru’}

php библиотека gdPHP библиотека 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 ):

php библиотека gd

… в тег img

<img src="путь к картинке"  alt="пингвины" width="200" height="200"  />

В результате мы получим вот это:

php библиотека gd

Изображение без обработки

Картинка деформировалась, так как ширина картинки не равна ее высоте .

И так, приступим к написанию кода, для избежания этой проблемы.

<?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 библиотека gd

Изображение после обработки

На этом примере мы рассмотрели изменение размера картинки в php, думаю, что здесь нет ничего сложного и теперь вы без проблем сможете изменять размеры ваших изображений.


Получайте новые статьи блога прямо себе на почту