获取图像宽高比

时间:2016-04-15 08:52:29

标签: php

我目前正在尝试使用PHP获取图像的宽高比。例如,使用这些值:

$thumb_width = 912;
$thumb_height = 608;

我可以获得宽高比(16:9,3:2,2:3等)。所以在这种情况下:

$ratio = '3:2';

事情是:我不知道它的新宽度或高度。所以我不能这样做:(original height / original width) x new width = new height

有什么想法吗?

注意:我不想调整图像大小,只需计算宽高比的宽高比。

4 个答案:

答案 0 :(得分:6)

所以你需要获得图像的大小

http://php.net/manual/en/function.getimagesize.php

list($width, $height, $type, $attr) = getimagesize("path/to/your/image.jpg");

所以,您已准备好$width$height

然后,您可以在https://stackoverflow.com/a/9143510/953684使用此答案将$width/$height的结果转换为比率。

答案 1 :(得分:1)

我总是喜欢编码中最紧凑的解决方案。它们通常更快、更强大且更易于阅读。

虽然 the option@Sharky 中提到的 accepted answer 可能会完成这项工作,但我认为以下解决方案更优雅且可读性更强:

$imageWidth = 912;
$imageHeight = 608;

$divisor = gmp_intval( gmp_gcd( $imageWidth, $imageHeight ) );
$aspectRatio = $imageWidth / $divisor . ':' . $imageHeight / $divisor;

有关 gmp_intvalgmp_gcd 的 PHP 手册中函数的更多信息。

答案 2 :(得分:0)

您在这里:

en

答案 3 :(得分:0)

这里有一些代码非常适合我。从http://blog.amnuts.com/2016/11/29/calculate-aspect-ratio/

得到了它

<?php

function ratio($a, $b)
{
    $gcd = function($a, $b) use (&$gcd) {
        return ($a % $b) ? $gcd($b, $a % $b) : $b;
    };
    $g = $gcd($a, $b);
    return $a/$g . ':' . $b/$g;
}

echo ratio(1920, 1080);  // 16:9
echo "\n";
echo ratio(640, 480); // 4:3