Я пытаюсь пакетным образом изменить размер изображения до размера 250 х 250 в PHP
Все исходные изображения имеют размер больше 250 x 250, так что это полезно.
Я хочу сохранить соотношение сторон, но сделать их все 250 х 250. Я знать что часть изображения будет обрезана для этого. Это не проблема для меня
Проблема в том, что мой текущий скрипт работает только с шириной и высотой в соответствии с аспектом, но иногда изображение в конечном итоге будет, скажем, 250 x 166. Я не могу это использовать.
В этом случае его необходимо будет изменить в противоположном направлении (высота к ширине)
Как должен выглядеть сценарий, чтобы всегда делать окончательное изображение 250 х 250 без растяжения. Опять же, мне все равно, есть ли обрезка. Я предполагаю, что где-то там будет кто-то еще, но сейчас это над моей головой. Я — больше человек переднего конца.
Любая помощь будет отличной.
Ниже приведена соответствующая часть моего полного сценария:
$width = 250;
$height = true;
// download and create gd image
$image = ImageCreateFromString(file_get_contents($url));
// calculate resized ratio
// Note: if $height is set to TRUE then we automatically calculate the height based on the ratio
$height = $height === true ? (ImageSY($image) * $width / ImageSX($image)) : $height;
// create image
$output = ImageCreateTrueColor($width, $height);
ImageCopyResampled($output, $image, 0, 0, 0, 0, $width, $height, ImageSX($image), ImageSY($image));
// save image
ImageJPEG($output, $destdir, 100);
$newWidth = 250;
$newHeight = 250;
// download and create gd image
$image = ImageCreateFromString(file_get_contents($url));
$width = ImageSX($image);
$height = ImageSY($image);
$coefficient = $newHeight / $height;
if ($newHeight / $width > $coefficient) {
$coefficient = $newHeight / $width;
}
// create image
$output = ImageCreateTrueColor($newWidth, $newHeight);
ImageCopyResampled($output, $image, 0, 0, 0, 0, $width * $coefficient, $height * $coefficient, $width, $height);
// save image
ImageJPEG($output, $destdir, 100);
Других решений пока нет …