【问题标题】:Get aspect ratio from width and height of image (PHP or JS)从图像的宽度和高度获取纵横比(PHP 或 JS)
【发布时间】:2011-12-24 01:11:13
【问题描述】:

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

【问题讨论】:

  • 不确定我是否理解正确,但也许您正在寻找 1024/768(宽度/高度)?

标签: javascript php aspect-ratio


【解决方案1】:

如果你能得到其中之一:高度、宽度,那么你可以计算出缺少的宽度高度:

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

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

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

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

【讨论】:

    【解决方案2】:

    要获得纵横比,只需像分数一样简化宽度和高度:

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

    【讨论】:

      【解决方案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);
      }
      

      【讨论】:

        【解决方案4】:

        您无需进行任何计算。

        仅仅因为它说纵横比并不意味着它必须是有限的commonly used ratios 之一。它可以是用冒号分隔的任意一对数字。

        引用the SLIR usage guide:

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

        如果要简洁,请计算宽度和高度的greatest common divisor,然后将它们除以。这会将您的 1024:768 减少到 4:3

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-11-14
          • 2014-07-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-26
          • 2021-02-09
          • 1970-01-01
          相关资源
          最近更新 更多