Подтвердить что ты не робот

Получить ориентацию изображения в PHP

Как я могу получить ориентацию изображения (пейзаж или портрет) изображения (JPEG или PNG) в PHP?

Я создал сайт php, где пользователи могут загружать фотографии. Прежде чем я уменьшу их до меньшего размера, я хочу знать, как изображение ориентировано, чтобы правильно масштабировать его.

Спасибо за ваш ответ!

4b9b3361

Ответ 1

Я всегда делал это:

list($width, $height) = getimagesize('image.jpg');
if ($width > $height) {
    // Landscape
} else {
    // Portrait or Square
}

Ответ 2

list($width, $height) = getimagesize("path/to/your/image.jpg");

if( $width > $height)
    $orientation = "landscape";
else
    $orientation = "portrait";

Ответ 3

Я предполагаю, что вы можете проверить, больше ли ширина изображения больше длины для Пейзажа и для портрета, если длина длиннее ширины.

Вы можете сделать это с помощью простого оператора IF / ELSE.

Вы также можете использовать функцию: Imagick::getImageOrientation

http://php.net/manual/en/imagick.getimageorientation.php

Ответ 4

Simple. Просто проверьте ширину и высоту и сравните их, чтобы получить ориентацию. Затем измените размер соответственно. Прямо на самом деле. Если вы пытаетесь сохранить пропорции, но вписываетесь в квадратную коробку, вы можете использовать что-то вроде этого:

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));
}

Ответ 5

Я использую обобщенный алгоритм масштабирования как...

   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 как по высоте, так и по ширине., чтобы миниатюра не превышала этот размер.,..

Это работает для меня, независимо от ландшафтной или портретной ориентации и может применяться в целом