我正在尝试用PHP批量将图像大小调整为250 x 250
所有源图像的尺寸都大于250 x 250,这很有帮助。
我想保持宽高比,但是将它们全部设置为250 x250。我知道,将图像的一部分裁剪掉。对我来说这不是问题
问题是我当前的脚本只能在宽度上工作,并且可以根据纵横比来调整高度,但是有时候,图像最终会变成250 x166。我不能使用它。
因此,需要以相反的方式(从高到宽)调整大小
该脚本看起来将如何始终使最终图像变为250 x 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);
答案 0 :(得分:2)
$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 (($target_width / $width) > $coefficient) {
$coefficient = $target_width / $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);