실제로 3780x2520은 3 : 2의 종횡비입니다. 너비가 3776이므로 472 : 315가 올바른 비율입니다. 당신이 부서를한다면 1.498으로 나오는데, 1.5에 가까워서 3 : 2로 반올림하는 것을 고려해야합니다.
"표준"비율 (예 : "3 : 2"또는 "16 : 9") 만 원할 경우 가장 가까운/가장 일치하는 것을 찾기 위해 검색된 비율을 반올림하는 다른 함수로 전달할 수 있습니다.
이
는 당신을 위해 라운딩 할 수있는 던져-함께 함수 (만 예에서 치수에 대해 테스트, 그래서 나는 아직 100 % 성공을 보장 할 수 없습니다) :
function findBestMatch($ratio) {
$commonRatios = array(
array(1, '1:1'), array((4/3), '4:3'), array((3/2), '3:2'),
array((5/3), '5:3'), array((16/9), '16:9'), array(3, '3')
);
list($numerator, $denominator) = explode(':', $ratio);
$value = $numerator/$denominator;
$end = (count($commonRatios) - 1);
for ($i = 0; $i < $end; $i++) {
if ($value == $commonRatios[$i][0]) {
// we have an equal-ratio; no need to check anything else!
return $commonRatios[$i][1];
} else if ($value < $commonRatios[$i][0]) {
// this can only happen if the ratio is `< 1`
return $commonRatios[$i][1];
} else if (($value > $commonRatios[$i][0]) && ($value < $commonRatios[$i + 1][0])) {
// the ratio is in-between the current common-ratio and the next in the list
// find whichever one it's closer-to and return that one.
return (($value - $commonRatios[$i][0]) < ($commonRatios[$i + 1][0] - $value)) ? $commonRatios[$i][1] : $commonRatios[$i + 1][1];
}
}
// we didn't find a match; that means we have a ratio higher than our biggest common one
// return the original value
return $ratio;
}
이를 사용하려면를 함수에서 숫자 값이 아닌 비율 문자열을 전달하면 일반 비율 목록에서 "가장 일치하는 항목 찾기"를 시도합니다.
사용 예제 : 다음
$widtho = 3968;
$heighto = 2232;
$gcd = gcd($widtho, $heighto);
$ratio = ($widtho/$gcd).':'.($heighto/$gcd);
echo 'found: ' . $ratio . "\n";
echo 'match: ' . findBestMatch($ratio) . "\n";
$widtho = 3776;
$heighto = 2520;
$gcd = gcd($widtho, $heighto);
$ratio = ($widtho/$gcd).':'.($heighto/$gcd);
echo 'found: ' . $ratio . "\n";
echo 'match: ' . findBestMatch($ratio) . "\n";
$widtho = 3780;
$heighto = 2520;
$gcd = gcd($widtho, $heighto);
$ratio = ($widtho/$gcd).':'.($heighto/$gcd);
echo 'found: ' . $ratio . "\n";
echo 'match: ' . findBestMatch($ratio) . "\n";
위의 테스트 출력됩니다 : 당신이 참조를 원한다면 내가 wikipedia에서 "표준"가로 세로 비율의 목록을했다 *
found: 16:9
match: 16:9
found: 472:315
match: 3:2
found: 3:2
match: 3:2
.
왜 작동하지 않습니까? 코드 (작동)에 따라 가로 세로 비율을 찾았습니다. 문제가 어디에 있습니까? –
너비가 3776이고 높이가 2520 인 사진은 종횡비가 3 : 2입니다. 아니 472 : 315 (그 종횡비가 존재합니까?!). 따라서 내 문제. – Erik
사실, 3780x2520은 3 : 2의 종횡비입니다. 너비가 3776이므로 472 : 315가 올바른 비율입니다. 부서를 맡으면 1.498에 가까워 꽤 가까이에 있습니다. "표준" "3 : 2"또는 "16 : 9"와 같은 "완벽한"비율을 원하면 가장 가까운/가장 일치하는 것을 찾기 위해 발견 된 비율을 다른 함수로 전달할 수 있습니다. – newfurniturey