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