ExBB Community » » PHP/Perl » Функция уменьшения картинки при загрузке

Страниц (1): [1]
 

1. Gori - 25 августа 2015 — 15:25 - перейти к сообщению
Есть функция:
CODE:
function createphoto ($input,$output) {
$w = 400; // мы получим пропорциональное изображение шириной 400px
$q = 80; // качество jpeg по умолчанию

$f=$input;
$src = imagecreatefromjpeg($f);
// функция imagecreatefromjpeg создает изображение JPEG из файла
// т.е. создаём исходное изображение на основе исходного файла и определяем его размеры

$w_src = imagesx($src);
$h_src= imagesy($src);
// получение ширины и высоты изображения в пикселях

$ratio = $w_src/$w;
$w_dest = round($w_src/$ratio);
$h_dest = round($h_src/$ratio);
// получение координат для построения нового изображения необходимой нам ширины

$dest = imagecreatetruecolor($w_dest,$h_dest);
// функция imagecreatetruecolor пустое полноцветное изображение размерами x_size и y_size.
// Созданное изображение имеет черный фон.

imagecopyresized($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src);
// Функция imagecopyresized копирует прямоугольные области с одного изображения на другое

// вывод картинки и очистка памяти
imagejpeg($dest,$output,$q);
imagedestroy($dest);
imagedestroy($src);
}

Выбрал её, т.к. код небольшой и всё расписано и какбы понятно.

Проблема в том, что если картинка загружается больше лимитного значения 400, то всё ОК - картинка ументшается. Всё прекрасно.
А вот если картинки загружается меньше этого значения - то она наоборот увеличивается до лимитного значения. И это очень плохо.

Что нужно добавать к коду, чтобы маленькие картинки не увеличивались?
2. 1Bot - 26 августа 2015 — 07:28 - перейти к сообщению
Gori пишет:
Проблема в том, что если картинка загружается больше лимитного значения 400, то всё ОК - картинка ументшается. Всё прекрасно.
А вот если картинки загружается меньше этого значения - то она наоборот увеличивается до лимитного значения. И это очень плохо.

Нужно после строчки
CODE:
$ratio = $w_src/$w;

вставить проверку
CODE:
if( $ratio<1 ) $ratio=1;

и все.
Т.о. если картинку нужно увеличить, то $ratio<1 и тогда масштаб задаем $ratio=1, т.е. не меняем масштаб.
3. Gori - 26 августа 2015 — 07:52 - перейти к сообщению
Спасибо!

Яндекс.Метрика   

Powered by ExBB
[Script Execution time: 0.0135]     [ ]