首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何计算出最接近的16:9宽高比分辨率。python 3

如何计算出最接近的16:9宽高比分辨率。python 3
EN

Stack Overflow用户
提问于 2018-12-28 13:26:09
回答 2查看 322关注 0票数 1

对于我正在处理的项目,我需要创建一个函数,该函数接受高度和宽度的输入,并输出具有16:9比率的最接近的高度和宽度

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

代码语言:javascript
运行
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-28 13:48:49

您可以尝试执行以下操作:

代码语言:javascript
运行
复制
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)

同样的逻辑可以被压缩为:

代码语言:javascript
运行
复制
def image_to_ratio(w, h):
    base = w//16 if w/h < 16/9 else h//9
    return base * 16, base * 9 
票数 4
EN

Stack Overflow用户

发布于 2018-12-28 14:01:23

@schwobaseggl答案的第二短版本:

代码语言:javascript
运行
复制
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

现在:

代码语言:javascript
运行
复制
print(image_to_ratio(1920, 1200))

是:

代码语言:javascript
运行
复制
(1920, 1080)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53954028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档