如何计算PHP中图像的纵横比

时间:2018-02-06 21:41:48

标签: php

如何从图像的宽度和高度中找到最低的除数。即:16:9。我已经提供了答案,但我确信有更好的方法来做到这一点。任何人都可以提供有关如何优化此功能的建议吗?

1 个答案:

答案 0 :(得分:-1)

这是一个解决方案,用于查找图像高度和宽度的最低除数,并返回Aspect(即:16:9)和比率为十进制(即:1.777778)。

$width = 555;
$height = 888;

$ratio = getAspectRatio($width, $height);

print_r($ratio);

function getAspectRatio($width, $height) {

    function getDivisorList($px) {
        $dlist = [];
        $i = 1;
        while($px / $i >= 1) {
            if($px % $i == 0) {
                $div = $px / $i;
                $dlist[$div] = $px / $div;
            }
            $i++;
        }
        return $dlist;
    }

    $wx = getDivisorList($width);
    $hx = getDivisorList($height);

    $aspect = '';
    $ratio = 0;

    foreach($wx as $div => $num) {
        if(isset($hx[$div])) {
            $aspect = $num.":".$hx[$div];
            $ratio = $num / $hx[$div];
            break;
        }
    }

    return array('aspect'=>$aspect, 'ratio'=>$ratio);
}

这会返回Array(“aspect”=>“5:8”,“ratio”=> 0.625)