Как я могу получить ориентацию изображения (пейзаж или портрет) изображения (JPEG или PNG) в PHP?
Я создал сайт php, где пользователи могут загружать фотографии. Прежде чем я уменьшу их до меньшего размера, я хочу знать, как изображение ориентировано, чтобы правильно масштабировать его.
Спасибо за Ваш ответ!
Я всегда делал это:
list($width, $height) = getimagesize('image.jpg'); if ($width > $height) { // Landscape } else { // Portrait or Square }
list($width, $height) = getimagesize("path/to/your/image.jpg"); if( $width > $height) $orientation = "landscape"; else $orientation = "portrait";
Полагаю, вы могли бы проверить, больше ли ширина изображения больше длины для Пейзажа и для портрета, если длина длиннее ширины.
Вы можете сделать это с помощью простого оператора IF / ELSE
.
Вы также можете использовать функцию: Imagick::getImageOrientation
Просто. Просто проверьте ширину и высоту и сравните их, чтобы получить ориентацию. Затем измените размер соответственно. Прямо на самом деле. Если вы пытаетесь сохранить пропорции, но вписываетесь в квадратную коробку, вы можете использовать что-то вроде этого:
public static function fit_box($box = 200, $x = 100, $y = 100) { $scale = min($box / $x, $box / $y, 1); return array(round($x * $scale, 0), round($y * $scale, 0)); }
Я использую обобщенный алгоритм масштабирования как. ..
function calculateSize($width, $height){ if($width <= maxSize && $height <= maxSize){ $ratio = 1; } else if ($width > maxSize){ $ratio = maxSize/$width; } else{ $ratio = maxSize/$height; } $thumbwidth = ($width * $ratio); $thumbheight = ($height * $ratio); }
Здесь максимальный размер – тот, который я инициализировал чем-то вроде 120px как по высоте, так и по ширине. , , чтобы миниатюра не превышала этот размер. , ..
Это работает для меня, независимо от пейзажной или портретной ориентации, и может применяться в целом