我知道我可以用一堆嵌套的 if 语句来做到这一点,但是我不禁觉得有一种更优雅的方式。我猜这真的只是一个数学问题,但如果确实有的话,我对pythonic答案很感兴趣。
我有一张可以是任何尺寸/纵横比的图像。
它必须按比例放大或缩小,以使其覆盖至少 55w x 168h
这里的复杂之处在于,它需要通过一个函数进行缩放,该函数仅采用一个值,该值指定将适合图像的正方形的边的长度。
例如,假设我们有一个大小为 1000w x 500h 的图像,我们将其缩放到 200,那么生成的图像必须适合边长为 200 的正方形,这意味着生成的图像将是 200w x 100h。
相反,如果我们的图像是 200x1000 并且我们缩放到 200,我们最终会得到 40x200。
因此,要将 1000x500 的图像缩放到 55x168,我们需要将其缩放到 336,给出 336x168 的大小,因为这是可以容纳在 336x336 边正方形内的最大图像。
要缩放 200x1000 的图像以覆盖 55x168,我们需要将其缩放到 275 并最终得到 55x275。
希望这比泥浆更清楚!感谢您的任何想法。
理由:对于那些对我为什么通过正方形的值进行缩放感兴趣的人,这是 Picasa 通过 URL 注入缩放图像的方式。例如采用以下 2 个 URL:
- https://lh3.googleusercontent.com/-rvkbjZgBMDs/UEHYD3VmGVI/AAAAAAAADwM/UekknfI838s/s150/IMG_20120901_172419.jpg
- https://lh6.googleusercontent.com/-6BHPw9kYIQc/UEHYBS5z-dI/AAAAAAAADwA/QkEWF3H797A/s150/IMG_20120901_172405.jpg
请注意,两者都有 URL 组件s150
,但是一个图像是 150x112,另一个是 112x150。150 是这些图像都适合的正方形的值。