Я хочу вычислить ширину изображения и размер для изменения размера. Думаю, может быть три ситуации:
1. Ширина изображения превышает максимально допустимую: Затем измените ширину изображения до максимальной и вычислите высоту в соответствии с максимальным пределом ширины. Например,ширина изображения 2248, а высота 532. Ширина больше, а высота меньше. Уменьшите ширину до 1024 и вычислите высоту, которая будет около 242.
2. Высота изображения превышает максимально допустимую высоту: Аналогичным образом измените высоту до максимальной и соответственно рассчитайте ширину.
3. Высота и ширина превышают максимальную высоту и максимальную ширину: Обработайте дальше, выясните, вертикальное или горизонтальное изображение. Если изображение горизонтальное, увеличьте ширину до максимальной и рассчитайте высоту в соответствии с этим. В противном случае, если изображение вертикальное или квадратное, увеличьте высоту до максимального и рассчитайте ширину в соответствии с этим.
Для таких ситуаций, можете ли вы взглянуть на мой код ниже, высказать свое экспертное мнение по этому поводу, если он хорош? Или это можно улучшить? Как?
PS. Вчера я задал аналогичный вопрос . В моем предыдущем вопросе я не был уверен, какой должна быть логика, а теперь я знаю, какой она должна быть (упомянута выше), и хотел бы знать, хороша ли она. Спасибо за любую помощь.
$max_width = 1024;
$max_height = 768;
$img = "t2.jpg";
list($original_width, $original_height) = getimagesize($img);
if (($original_width > $max_width) OR ($original_height > $max_height))
{
//original width exceeds, so reduce the original width to maximum limit.
//calculate the height according to the maximum width.
if(($original_width > $max_width) AND ($original_height <= $max_height))
{
$percent = $max_width/$original_width;
$new_width = $max_width;
$new_height = round ($original_height * $percent);
}
//image height exceeds, recudece the height to maxmimum limit.
//calculate the width according to the maximum height limit.
if(($original_width <= $max_width) AND ($original_height > $max_height))
{
$percent = $max_height/$original_height;
$new_height = $max_height;
$new_width = round ($original_width * $percent);
}
//both height and width exceeds.
//but image can be vertical or horizontal.
if(($original_width > $max_width) AND ($original_height > $max_height))
{
//if image has more width than height
//resize width to maximum width.
if ($original_width > $original_height)
{
$percent = $max_width/$original_width;
$new_width = $max_width;
$new_height = round ($original_height * $percent );
}
//image is vertical or square. More height than width.
//resize height to maximum height.
else
{
$new_height = $max_height;
$percent = $max_height/$original_height;
$new_height = $max_height;
$new_width = round ($original_width * $percent);
}
}
}
?>