计算长宽比的算法是什么?

我计划将其与JavaScript配合使用以裁剪图像以适合整个窗口。

:我将使用仅接受如下格式的长宽比的第三方组件:4:316:9

回答:

我发现您正在寻找integer:integer像这样的可用长宽比解决方案,16:9而不是float:1像这样的解决方案1.77778:1

如果是这样,您需要做的就是找到最大公约数(GCD)并将其除以两个值。GCD是将两个数字均分的最高数字。因此6和10的GCD为2,44和99的GCD为11。

例如,一个1024x768监视器的GCD为256。将这两个值除以该值将得到4x3或4:3。

(递归)GCD算法

function gcd (a,b):

if b == 0:

return a

return gcd (b, a mod b)

在C中:

static int gcd (int a, int b) {

return (b == 0) ? a : gcd (b, a%b);

}

int main(void) {

printf ("gcd(1024,768) = %d\n",gcd(1024,768));

}

这是一些完整的HTML /

Javascript,它显示了一种检测屏幕尺寸并从中计算纵横比的方法。这在FF3中有效,我不确定其他浏览器对screen.width和的支持screen.height

<html><body>

<script type="text/javascript">

function gcd (a, b) {

return (b == 0) ? a : gcd (b, a%b);

}

var w = screen.width;

var h = screen.height;

var r = gcd (w, h);

document.write ("<pre>");

document.write ("Dimensions = ", w, " x ", h, "<br>");

document.write ("Gcd = ", r, "<br>");

document.write ("Aspect = ", w/r, ":", h/r);

document.write ("</pre>");

</script>

</body></html>

它输出(在我怪异的宽屏显示器上):

Dimensions = 1680 x 1050

Gcd = 210

Aspect = 8:5

我测试过的其他人:

Dimensions = 1280 x 1024

Gcd = 256

Aspect = 5:4

Dimensions = 1152 x 960

Gcd = 192

Aspect = 6:5

Dimensions = 1280 x 960

Gcd = 320

Aspect = 4:3

Dimensions = 1920 x 1080

Gcd = 120

Aspect = 16:9

我希望我能在家里有最后一个,但不幸的是,这是一台工作机器。

如果发现图形调整大小工具不支持长宽比,该怎么办。我怀疑最好的选择是添加字母装订线(就像您在旧电视上观看宽屏电影时在顶部和底部看到的那样)。我将它们添加到顶部/底部或侧面(无论哪一个导致最少的装箱线数量),直到图像满足要求为止。

您可能要考虑的一件事是,图像的质量已从16:9更改为5:4-我仍然记得在介绍信箱技术之前,我在电视上看过的那年高个子,瘦小的牛仔。您最好在每高宽比上拥有一张不同的图像,而只是将实际尺寸调整为适合实际屏幕尺寸的尺寸,然后再将其发送出去。

以上是 计算长宽比的算法是什么? 的全部内容, 来源链接: utcz.com/qa/435086.html

回到顶部