我不敢相信我找不到这个公式。我正在使用一个名为 SLIR 的 PHP 脚本来调整图像大小。该脚本要求指定裁剪的纵横比。我想根据我让用户输入这些值的表单中指定的图像的宽度和高度来获取纵横比。例如,如果用户输入 1024x768 图像,我会得到纵横比4:3。在我的一生中,我找不到 PHP 或 Javascript 中的公式示例,我可以使用它来获取基于 w、h 的纵横比值并将纵横比插入变量。
问问题
16821 次
4 回答
10
如果您可以获得以下之一:高度,宽度,那么您可以计算缺少的宽度高度:
原始宽度 * 新高度 / 原始高度 = 新宽度;
原始高度 * 新宽度 / 原始宽度 = 新高度;
或者,如果您只想要一个比率:
原始宽度/原始高度=比率
于 2011-11-07T23:19:29.570 回答
7
要获得纵横比,只需像分数一样简化宽度和高度,例如:
1024 4
---- = ---
768 3
php代码:
function gcd($a, $b)
{
if ($a == 0 || $b == 0)
return abs( max(abs($a), abs($b)) );
$r = $a % $b;
return ($r != 0) ?
gcd($b, $r) :
abs($b);
}
$gcd=gcd(1024,768);
echo "Aspect ratio = ". (1024/$gcd) . ":" . (768/$gcd);
于 2011-11-08T00:06:18.037 回答
3
这是最大公约数整数比的更简单的替代方案:
function ratio( $x, $y ){
$gcd = gmp_strval(gmp_gcd($x, $y));
return ($x/$gcd).':'.($y/$gcd);
}
请求echo ratio(25,5);
返回5:1
。
如果您的服务器没有使用 GMP 函数编译...
function gcd( $a, $b ){
return ($a % $b) ? gcd($b,$a % $b) : $b;
}
function ratio( $x, $y ){
$gcd = gcd($x, $y);
return ($x/$gcd).':'.($y/$gcd);
}
于 2014-04-20T07:10:04.460 回答
2
您无需进行任何类型的计算。
仅仅因为它说纵横比并不意味着它必须是一组有限的常用比率之一。它可以是用冒号分隔的任意一对数字。
引用SLIR 使用指南:
例如,如果您希望您的图像正好是 150 像素宽 x 100 像素高,您可以这样做:
<img src="/slir/w150-h100-c150:100/path/to/image.jpg" alt="Don't forget your alt text" />
或者,更简洁地说:
<img src="/slir/w150-h100-c15:10/path/to/image.jpg" alt="Don't forget your alt text" />
请注意,他们没有费心将其进一步减少到c3:2
.
因此,只需使用用户输入的值:1024:768
.
如果要简洁,请计算宽度和高度的最大公约数,然后将它们除以。那会减少你的1024:768
下降到4:3
.
于 2011-11-08T00:14:13.890 回答