我如何计算16:9长宽比的最接近分辨率。 python 3

时间:2018-12-28 05:26:09

标签: python python-3.x

对于我正在从事的项目,我需要制作一个函数,该函数接受高度和宽度的输入并输出最接近的16:9高度和宽度

这是我到目前为止所得到的

def image_to_ratio(h, w):
    if width % 16 < height % 9:
        h -= (h % 9)
    else:
        w -= (w% 9)
    return h, w

输入:     1920、1200

我的功能的输出:     1920,1197

2 个答案:

答案 0 :(得分:2)

您可以尝试以下操作:

from __future__ import division  # needed in Python2 only

def image_to_ratio(w, h):
    if (w / h) < (16 / 9):
        w = (w // 16) * 16
        h = (w // 16) * 9
    else: 
        h = (h // 9) * 9
        w = (h // 9) * 16
    return w, h 

>>> image_to_ratio(1920, 1200)
(1920, 1080)

同样的逻辑可以总结为:

def image_to_ratio(w, h):
    base = w//16 if w/h < 16/9 else h//9
    return base * 16, base * 9 

答案 1 :(得分:1)

@schwobaseggl答案的第二个最短版本:

gets()

现在:

def image_to_ratio(h, w):
    if (w/h) < (16/9):h,w=16*(h//16),9*(h//16)
    else:h,w=16*(h//9),9*(h//9)
    return h,w

是:

print(image_to_ratio(1920, 1200))