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