Я хочу рассчитать ширину и размер изображения для изменения размера.Я думаю, что может быть три ситуации:
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);
}
}
}
?>