首页 文章

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

提问于
浏览
4

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

4 回答

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

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

    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

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

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

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

    或者如果你只想要一个比例:

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

  • 6

    您无需进行任何计算 .

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

    引自the SLIR usage guide

    例如,如果您希望图像正好为150像素宽,100像素高,则可以执行以下操作:<img src =“/ slir / w150-h100-c150:100 / path / to / image.jpg”alt =“不要忘记你的替代文字”/>
    或者,更简洁:<img src =“/ slir / w150-h100-c15:10 / path / to / image.jpg”alt =“不要忘记你的替代文字”/>

    请注意,他们没有费心将其进一步减少到 c3:2 .

    因此,只需使用用户输入的值: 1024:768 .

    如果你想简洁,计算宽度和高度的greatest common divisor并将它们除以它们 . 这会将你的 1024:768 减少到 4:3 .

相关问题