计算长宽比的算法是什么?
我计划将其与JavaScript配合使用以裁剪图像以适合整个窗口。
:我将使用仅接受如下格式的长宽比的第三方组件:4:3
,16: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 1050Gcd = 210
Aspect = 8:5
我测试过的其他人:
Dimensions = 1280 x 1024Gcd = 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