Javascript 从图像的宽度和高度获取纵横比(PHP或JS)
真不敢相信我找不到这个公式。我正在使用一个名为SLIR的PHP脚本来调整图像大小。脚本要求指定裁剪的纵横比。我想根据在表单中指定的图像的宽度和高度获得纵横比,我让用户在表单中输入这些值。例如,如果用户输入1024x768图像,我将得到4:3的纵横比。就我的一生而言,我找不到PHP或Javascript中的公式示例,我可以在知道w、h的基础上使用它来获取纵横比值,并将纵横比插入变量 如果可以得到:高度、宽度中的一个,则可以计算缺少的宽度高度: 原始宽度*新高度/原始高度=新宽度 原始高度*新宽度/原始宽度=新高度 或者,如果您只需要一个比率:Javascript 从图像的宽度和高度获取纵横比(PHP或JS),javascript,php,aspect-ratio,Javascript,Php,Aspect Ratio,真不敢相信我找不到这个公式。我正在使用一个名为SLIR的PHP脚本来调整图像大小。脚本要求指定裁剪的纵横比。我想根据在表单中指定的图像的宽度和高度获得纵横比,我让用户在表单中输入这些值。例如,如果用户输入1024x768图像,我将得到4:3的纵横比。就我的一生而言,我找不到PHP或Javascript中的公式示例,我可以在知道w、h的基础上使用它来获取纵横比值,并将纵横比插入变量 如果可以得到:高度、宽度中的一个,则可以计算缺少的宽度高度: 原始宽度*新高度/原始高度=新宽度 原始高度*新宽度/
原始宽度/原始高度=比率要获得纵横比,只需将宽度和高度简化为分数,例如:
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);
你不需要做任何计算 仅仅因为它说纵横比并不意味着它必须是有限的一组。它可以是由冒号分隔的任何一对数字 引述自: 例如,如果希望图像的宽度正好为150像素,高度正好为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
以下是一个更简单的最大公约数-整数比率的替代方案:
function ratio( $x, $y ){
$gcd = gmp_strval(gmp_gcd($x, $y));
return ($x/$gcd).':'.($y/$gcd);
}
请求<代码>回波比(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);
}
不确定我是否理解正确,但也许您正在寻找1024/768(宽/高)?