PHP изменить размер изображения фиксированного размера, но сохранить ориентацию - PullRequest
1 голос
/ 31 марта 2010

Мне нужно изменить размер изображений в php с помощью GD до фиксированного размера, но сохранить ориентацию (портрет / пейзаж), это:

портрет: 375 х 500 пикселей пейзаж: 500 x 375 пикселей

Все, что я пробовал, всегда игнорирует ориентацию и делает их все альбомными.

Кто-нибудь может помочь?

Ответы [ 3 ]

2 голосов
/ 31 марта 2010

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

1 голос
/ 31 марта 2010

Вот метод из класса изображений, который я использую, который вычисляет масштабированные размеры изображения. Это работает, помещая изображение в квадратную коробку.

Вы можете установить $box = 500, а затем передать $x и $y изображения, которое вы пытаетесь изменить, и оно всегда вернет правильные размеры с сохранением соотношения сторон.

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));
}
0 голосов
/ 04 декабря 2011

Здесь правильно ответили на этот вопрос: Как определить угол съемки фотографии и автоповорот для отображения веб-сайта, как это делают настольные приложения при просмотре?

Краткий ответ: вам нужно использовать функцию exif_read_data(), чтобы получить атрибут «Ориентация» фотографии, а затем вы можете использовать это значение, чтобы определить, нужно ли поворачивать фотографию. Ответ выше содержит пример кода PHP, который показывает вам, как это сделать.

...