О web-разработке
и даже немного больше...

Ресайзинг изображений на PHP

Ресайзинг изображений на PHP является задачей одной из распространенных, с которой при разработке иногда приходиться сталкиваться с некоторой периодичностью. На этот случай удобно иметь под рукой сниппет, который можно с легкостью адаптировать в свой код, и выиграть по времени для решения других задач. Один из вариантов кода реализации ресайзинга изображений опубликован на данной странице. Итак, снипет представляет из себя функцию, для работы которой так же необходимо убедиться в наличии PHP библиотеки GD, т.к. её отсутствие банально приведет к фатальной ошибке.

Функции передаются параметры:
$src – путь до изображения
$desc – путь для сохранения файла (включая имя файла)
$width, $height – ширина, высота нового изображения
$rgb – заливка фона, не обязательный параметр
$quality – степень сжатия изображения, (100 – максимальное качество)

function img_resize($src, $dest, $width, $height, $rgb = 0xFFFFFF, $quality = 100){

if(!file_exists($src)) return false;
$size = getimagesize($src);

if ($size === false) return false;

$format = strtolower(substr($size['mime'], strpos($size['mime'], '/') + 1));
$icfunc = 'imagecreatefrom'.$format;

if (!function_exists($icfunc)) return false;

$x_ratio = $width  / $size[0];
$y_ratio = $height / $size[1];

if ($height == 0){
	$y_ratio = $x_ratio;
	$height = $y_ratio * $size[1];
} elseif ($width == 0){
	$x_ratio = $y_ratio;
	$width = $x_ratio * $size[0];
}

$ratio = min($x_ratio, $y_ratio);
$use_x_ratio = ($x_ratio == $ratio);

$new_width = $use_x_ratio  ? $width  : floor($size[0] * $ratio);
$new_height = !$use_x_ratio ? $height : floor($size[1] * $ratio);
$new_left = $use_x_ratio  ? 0 : floor(($width - $new_width)   / 2);
$new_top = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);

$isrc = $icfunc($src);
$idest = imagecreatetruecolor($width, $height);

imagefill($idest, 0, 0, $rgb);
imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0, $new_width, $new_height, $size[0], $size[1]);

imagejpeg($idest, $dest, $quality);

imagedestroy($isrc);
imagedestroy($idest);

return true;
}
Опубликован: 02.07.2014 г.

См. также:

Редакторы кода для PHP
Как просмотреть время загрузки страницы в PHP?
Генерация QR-кода в PHP
Загрузка файлов на сервер посредством Ajax
Импорт записей из Excel в WordPress
Парсинг XML в PHP
Установка IonCube на XAMPP
Создание PDF файлов в PHP

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта