从图像的宽度和高度获取宽高比(PHP或JS)

时间:2011-11-07 23:16:49

标签: javascript php aspect-ratio

我无法相信我找不到这个公式。我正在使用一个名为SLIR的PHP脚本来调整图像大小。该脚本要求指定裁剪的宽高比。我想根据我允许用户输入这些值的形式指定图像的宽度和高度来获得宽高比。例如,如果用户输入1024x768图像,我会得到宽高比4:3。对于我的生活,我找不到PHP或Javascript中的公式示例我可以用来获得基于知道w,h的宽高比值并将宽高比插入变量。

4 个答案:

答案 0 :(得分:9)

如果您可以得到以下之一:高度,宽度,那么您可以计算缺失的宽度高度:

原始宽度*新高度/原始高度=新宽度;

原始高度*新宽度/原始宽度=新高度;

或者如果您只想要一个比率:

原始宽度/原始高度=比率

答案 1 :(得分:6)

获得宽高比只是简化宽度和高度,例如:

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);

答案 2 :(得分:2)

您无需进行任何计算。

仅仅因为它表示宽高比并不意味着它必须是有限的commonly used ratios之一。它可以是由冒号分隔的任何数字对。

引自the SLIR usage guide

  

例如,如果您希望图像正好为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

如果你想简明扼要,计算宽度和高度的greatest common divisor并将它们除以它们。这会将1024:768缩减为4:3

答案 3 :(得分:2)

对于最大公约数整数比,这是一个更简单的替代方法:

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);
}