Блог разработчиков

Все разделы | CMS Joomla 2.5 | Общее | PHP | Javascript + jQuery

Функция изменения размера изображения с отсечением лишних краев

23 марта 2015

Хорошим решением данной задачи было бы использование функций библиотеки Imagemagick, но не всегда данная библиотека установлена на сервере и вот тут приходится выкручиваться. В этой статье представляю функцию кропления изображения (изменения размеров картинки с отсечением лишних краев).

Код самой функции:

function imageresize($outfile,$infile,$neww,$newh,$quality,$extension) {
    if (mb_strtolower($extension) == 'jpg' || mb_strtolower($extension) == 'jpeg') {
        $im = imagecreatefromjpeg($infile);
    }
    if (mb_strtolower($extension) == 'png') {
        $im = imagecreatefrompng($infile);
    }
    if (mb_strtolower($extension) == 'gif') {
        $im = imagecreatefromgif($infile);
    }
    $thumb_width = $neww;
    $thumb_height = $newh;
    $width = imagesx($im);
    $height = imagesy($im);
    $original_aspect = $width / $height;
    $thumb_aspect = $thumb_width / $thumb_height;
    if ( $original_aspect >= $thumb_aspect )
    {
    $new_height = $thumb_height;
    $new_width = $width / ($height / $thumb_height);
    }
    else
    {
    $new_width = $thumb_width;
    $new_height = $height / ($width / $thumb_width);
    }
    $im1 = imagecreatetruecolor( $thumb_width, $thumb_height );
    imagecopyresampled($im1,
                        $im,
                        0 - ($new_width - $thumb_width) / 2,
                        0 - ($new_height - $thumb_height) / 2,
                        0, 0,
                        $new_width, $new_height,
                        $width, $height);
    imagejpeg($im1,$outfile,$quality);
    imagedestroy($im);
    imagedestroy($im1);
}

Функция принимает файл и сохраняет его на сервере в указанном месте.

Использование функции:

imageresize($outfile,$infile,$neww,$newh,$quality,$extension);

где:

$outfile - полный путь до картинки, которая будет получена в результате исполнения скрипта,

$infile - полный путь до картинки, которую необходимо отдать скрипту,

$neww - ширина изображения на выходе, только цифры,

$newh - высота изображения на выходе, только цифры,

$quality - качество картинки на выходе, только цифры от 10 до 100,

$extension - расширение файла, например jpg.