Ответ 1
Я всегда делал это:
list($width, $height) = getimagesize('image.jpg');
if ($width > $height) {
// Landscape
} else {
// Portrait or Square
}
Как я могу получить ориентацию изображения (пейзаж или портрет) изображения (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
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));
}
Я использую обобщенный алгоритм масштабирования как...
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 как по высоте, так и по ширине., чтобы миниатюра не превышала этот размер.,..
Это работает для меня, независимо от ландшафтной или портретной ориентации и может применяться в целом