有人可以用方程式帮助我。我想调整图像的大小,使其最小宽度或高度为200px。因此,如果原件是500 x 300,那么它最终会是333 x 200,如果原件是500 x 900,那么它最终会是200 x 360,依此类推。如果原始尺寸中的任何一个小于200px,则不会进行尺寸调整。
我很感激有关此的任何意见。我相信它很简单,我似乎无法解决它。
答案 0 :(得分:3)
你只需要计算出现有的图像比率并从中进行数学运算。该比率是与高度相比的图像宽度,反之亦然(通常哪个更长,除以更短的比率,使得比率> = 1)。例如,宽度450和高度300具有1.5宽的比率。这意味着图像比它高1.5倍。然后你可以将你的“最小”值乘以得到另一个尺寸的比例,或者如果你的身高是200,那么另一边将是最小*比率或200 * 1.5,这使得尺寸为300宽和200高。 / p>
$height = 500;
$width = 300;
$min = 200;
if($width > $height){
$ratio = $width/$height;
$height = $min;
$width = round($min * $ratio);
} else {
$ratio = $height/$width;
$width = $min;
$height = round($min * $ratio);
}
echo "Width: $width<br>";
echo "Height: $height<br>";
答案 1 :(得分:1)
显然,你希望最小的一面适合200px,但不要高档。我会做这样的事情
if ($width > 200 || $height > 200) {
if ($width > $height) {
$ratio = (200 / $height);
} else {
$ratio = (200 / $width);
}
$resizedWidth = $ratio * $width;
$resizedHeight = $ratio * $height;
}
不是完整的代码,只是一个起点,希望这有帮助
答案 2 :(得分:1)
如果你的服务器安装了php imagick扩展,你可以使用cropThumbnailImage()函数
答案 3 :(得分:0)
我将Jonahtan的答案缩短了一点,并且您只计算了一次比率:
// Set image dimensions for testing
$imgWidth = 100;
$imgHeight = 250;
// Minimal dimension requirements
$minDim = 300;
if ($imgWidth < $minDim || $imgHeight < $minDim) {
$ratio = $imgWidth / $imgHeight;
if( $ratio > 1) { // Width is greater
$imgHeight = $minDim;
$imgWidth = round($minDim * $ratio);
}
else { // Height is greater
$imgWidth = $minDim;
$imgHeight = round($minDim / $ratio);
}
}
echo "Width: $imgWidth<br>";
echo "Height: $imgHeight<br>";