一尘不染

数学/算法使图像适合屏幕保留纵横比

algorithm

我需要数学/算法方面的帮助,以获取已知大小的图像并适合两个屏幕尺寸之一:

720 x 480或1280 x 1024。

图像尺寸来自XML文件,但是这些尺寸是Web尺寸,我还从XML中选择了比Web尺寸分辨率更高或更低的图像。

我想要的是使用网络尺寸的宽高比在HD(1280x720)屏幕上显示更高分辨率的图像(如果可用),或者,如果用户在SD屏幕(720x480)上,则在该屏幕上显示图像。

如果我知道图像的分辨率在两个维度上都比SD屏幕小(在这种情况下,我所知道的仅是Web尺寸和水平尺寸),则对此有用但会降低优先级的其他事情图片文件),以在该屏幕上将其显示为实际尺寸。

希望这很清楚。

谢谢!


阅读 282

收藏
2020-07-28

共1个答案

一尘不染

通用的可以是:

图像数据:(w i,h i)并定义r i = w i / h i
屏幕分辨率:(w s,h s)并定义r s = w s / h s

缩放的图像尺寸:

rs > ri ? (wi * hs/hi, hs) : (ws, hi * ws/wi)

因此,例如:

         20
|------------------|
    10
|---------|

--------------------     ---   ---
|         |        |      | 7   |
|         |        |      |     | 10
|----------        |     ---    |
|                  |            |
--------------------           ---

ws = 20
hs = 10
wi = 10
hi = 7

20/10 > 10/7 ==> (wi * hs/hi, hs) = (10 * 10/7, 10) = (100/7, 10) ~ (14.3, 10)

如您所见,它的大小与屏幕尺寸成比例,因为高度是屏幕的高度,但显然保持宽高比,因为 14.3/10 ~ 10/7

更新

将图像居中,如下所示:

调用(w new,h new)新维度。

top = (hs - hnew)/2
left = (ws - wnew)/2
2020-07-28