Приветствую всех. У меня такая задача, скорее по алгебре, чем про программированию. Вот написал приложение для создания превьюшек изображений в новостях в стороннию CMS. Но вот никак не допрёт как правильно высчитывать новые размеры.
Итак, ширина превьюшки должна быть максимум 450, если ширина > 450, то высота должна пропорционально уменьшаться.
Пробовал две формулы.
1)
#####################################################
# $img_width - реальная ширина
# $img_height и $img_real_height - реальная высота
#####################################################
$img_real_height = $img_height; // резервируем реальную высоту
$width_diff = $img_width - 450; // выясняем, на сколько мы урезали изображение
$img_height = $img_height - $width_diff; // новая уменьшанная высота изображения
2) Эту формулу мне подсказали -
#####################################################
# $img_width - реальная ширина
# $img_height и $img_real_height - реальная высота
#####################################################
$img_real_height = $img_height; // резервируем реальную высоту
$width_diff = $img_width - 450; // на сколько мы урезали изображение в ширине
$one_percent = $width_diff/100; // 1% от того, на сколько урезали
$thirty_percent = 30*$one_percent; // 30% от того, на сколько урезали
$img_height = $width_diff - $thirty_percent; // новая уменьшанная высота изображения
Но всё это не то.
Например по первой формуле 1600х1400 обрезается до 450х50, по второй формуле до 450х805. Однако к примеру нормально сжимается размер 500х375 (до 450х360, по второй формуле).
Я думаю стоит делать проверку, если высота больше ширины на N-число или процент, то урезаем по второй формуле. Если же меньше, то оставляем как есть. Даже и не знаю. Хочется чтобы всё было как нужно