我需要数学/算法方面的帮助,以获取已知大小的图像并适合两个屏幕尺寸之一:
720 x 480或1280 x 1024。
图像尺寸来自XML文件,但是这些尺寸是Web尺寸,我还从XML中选择了比Web尺寸分辨率更高或更低的图像。
我想要的是使用网络尺寸的宽高比在HD(1280x720)屏幕上显示更高分辨率的图像(如果可用),或者,如果用户在SD屏幕(720x480)上,则在该屏幕上显示图像。
如果我知道图像的分辨率在两个维度上都比SD屏幕小(在这种情况下,我所知道的仅是Web尺寸和水平尺寸),则对此有用但会降低优先级的其他事情图片文件),以在该屏幕上将其显示为实际尺寸。
希望这很清楚。
谢谢!
通用的可以是:
图像数据:(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
14.3/10 ~ 10/7
更新
将图像居中,如下所示:
调用(w new,h new)新维度。
top = (hs - hnew)/2 left = (ws - wnew)/2