我目前正在尝试使用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
有什么想法吗?
注意:我不想调整图像大小,只需计算宽高比的宽高比。
答案 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_intval 和 gmp_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