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

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

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

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

5 ответов


Я всегда делал так:

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

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


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

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

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