【问题标题】:Find upper left of image after resizing to fit screen调整大小以适应屏幕后找到图像的左上角
【发布时间】:2015-06-29 07:03:56
【问题描述】:

我有一个我无法解决的问题-

假设我有一张任意尺寸的图像。我调整它的大小,使其适合 1024x768,同时保持纵横比。我把它放在屏幕上。这样做之后,我怎样才能找到左上角的结束位置?

所以,如果图像的宽度大于高度,我们最终会得到类似

绿色矩形以不同的大小开始。它已调整大小以适合粉红色矩形。我想找到绿色矩形的左上角。

我写了一堆笔记,画了一堆图表,但我得到了所有错误的答案。有人可以解释如何做到这一点吗?我正在使用 python 2.7

【问题讨论】:

    标签: python image algorithm python-2.7 image-resizing


    【解决方案1】:

    w,h 成为图片的大小。

    为了适应 1024 的宽度,我们必须按以下比例缩放图像:

    >>> r=1024./w
    

    但是,如果图像较高,在将其缩放r 后,它的高度将不适合屏幕,因此在这种情况下缩放因子为:

    >>> if h*r > 768: r=768./h
    

    缩放后的图像左上角坐标为:

    >>> (1024-w*r)*0.5,(768-h*r)*0.5
    

    编辑:

    计算左上角点的便捷函数(也适用于 Python 2.x):

    def topLeft(w,h,screenw=1024,screenh=768):
        r=float(screenw)/float(w)
        if h*r > screenh: r=float(screenh)/float(h)
        return (screenw-w*r)*0.5,(screenh-h*r)*0.5
    

    【讨论】:

    • 非常感谢您的快速回复!
    • 等等,最后的 x 或最后的 y 不会是 0,因为它被压在边缘上吗?我想这是右下角,也许……我忘了说,我从左上角开始数坐标。
    • 是的,两个坐标之一始终为 0,因为您适合屏幕(因为 r1024/w768/h,所以如果您将 r 替换为 @987654332 @你得到(0,768-h*1024/w)1024-w*768/h,0)。屏幕左上角坐标为(0, 0)。
    • 好的。所以坐标是(1024-w*r)/2, 0(768-h*r)/2, 0 取决于哪个更高。
    • 当我输入(1024, 768) 时,我得到(0, 0),但如果我随后输入图像的尺寸,例如(1990, 1325),我得到512, 384
    猜你喜欢
    • 2011-02-03
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    • 2014-05-18
    • 2017-11-11
    • 1970-01-01
    相关资源
    最近更新 更多