Рассчитать правильный уменьшенный в пропорции размер фото по ширине и высоте в php? - PullRequest
0 голосов
/ 01 ноября 2011

У меня есть 2 переменные для фотографии, которую я импортирую, ширину и высоту (я мог бы использовать imagesx и т. Д., Но я импортирую навалом, и это занимает слишком много времени)

например ..

$w = 720;
$h = 540;

Как определить правильную высоту для фотографии, если я скажу, что максимальная ширина составляет 180 пикселей, я знаю, что правильная высота должна составлять 135 пикселей (на стандартной пейзажной фотографии).Но начальная ширина и высота, которые мне даны, будут меняться в зависимости от фотографии.

Сохранение изображения в пропорции, какие вычисления мне нужно сделать, чтобы тренировать уменьшенную ширину и высоту?

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

(Мне на самом деле не нужно изменять размер фотографии, просто рассчитайте размер.)

Заранее спасибо:)

Ответы [ 3 ]

1 голос
/ 01 ноября 2011
720x = 540 * 180

Это простое правило кросс-умножения. Затем округлите числа, чтобы избавиться от десятичной части.

1 голос
/ 25 июня 2012

А это javascript-версия ответа @ fire

scaleDimensions : function(orig_width, orig_height, max_width, max_height) {
    if (orig_width < max_width && orig_height < max_height) {
        return [orig_width, orig_height];
    }

    var ratiow = max_width / orig_width;
    var ratioh = max_height / orig_height;
    var ratio = Math.min(ratiow, ratioh);
    var width = (ratio * orig_width).toFixed(0);
    var height = (ratio * orig_height).toFixed(0);
    return [width, height];
}
1 голос
/ 01 ноября 2011

Вот один, который я использую:

function scaleDimensions($orig_width, $orig_height, $max_width, $max_height) {
    if ($orig_width < $max_width && $orig_height < $max_height) {
        return array($orig_width, $orig_height);
    }

    $ratiow = $max_width / $orig_width;
    $ratioh = $max_height / $orig_height;
    $ratio = min($ratiow, $ratioh);
    $width = intval($ratio * $orig_width);
    $height = intval($ratio * $orig_height);
    return array($width, $height);
}

Использование:

list($width, $height) = scaleDimensions($w, $h, 180, 135);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...