如何按高度缩放图片并自动匹配原宽高比?(PHP imagescale应用)
解决方案:按固定高度缩放图片并保持宽高比
嘿,这个问题其实很好解决!imagescale函数并不支持直接传入'auto'作为参数,但我们可以手动计算出对应高度下的宽度,以此来保持原始图片的宽高比。
核心思路
原始图片的宽高比是你已经计算好的$rat = $info[0] / $info[1],当我们要把高度固定为540时,只需要用这个比例乘以目标高度,就能得到保持比例的新宽度:
$newWidth = $rat * 540;
因为图片尺寸必须是整数,所以我们需要把计算结果转成整数类型(可以用强制类型转换或者round()函数,根据你的需求选择)。
修改后的完整代码片段
$ratio = 16/9; $rat = $info[0] / $info[1]; if ($rat == $ratio){ $newimg = imagescale($newimg, 960, 540, IMG_BICUBIC); // 此代码可正常运行 } elseif ($rat > $ratio){ // 计算符合比例的新宽度 $newWidth = (int)($rat * 540); $newimg = imagescale($newimg, $newWidth, 540, IMG_BICUBIC); }
额外提示
如果你希望所有场景下都能按固定高度540缩放并保持比例,其实可以简化逻辑,不用分比例判断:
$targetHeight = 540; $newWidth = (int)($info[0] / $info[1] * $targetHeight); $newimg = imagescale($newimg, $newWidth, $targetHeight, IMG_BICUBIC);
这样不管原始图片比例是多少,都会自动计算出合适的宽度,完美保持原始比例。
内容的提问来源于stack exchange,提问作者blueSky
相关产品推荐
相关产品推荐

