Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从图像的宽度和高度获取纵横比(PHP或JS)_Javascript_Php_Aspect Ratio - Fatal编程技术网

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

Javascript 从图像的宽度和高度获取纵横比(PHP或JS),javascript,php,aspect-ratio,Javascript,Php,Aspect Ratio,真不敢相信我找不到这个公式。我正在使用一个名为SLIR的PHP脚本来调整图像大小。脚本要求指定裁剪的纵横比。我想根据在表单中指定的图像的宽度和高度获得纵横比,我让用户在表单中输入这些值。例如,如果用户输入1024x768图像,我将得到4:3的纵横比。就我的一生而言,我找不到PHP或Javascript中的公式示例,我可以在知道w、h的基础上使用它来获取纵横比值,并将纵横比插入变量 如果可以得到:高度、宽度中的一个,则可以计算缺少的宽度高度: 原始宽度*新高度/原始高度=新宽度 原始高度*新宽度/

真不敢相信我找不到这个公式。我正在使用一个名为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(宽/高)?