枕头调整图像大小 - 保持纵横比
Posted
技术标签:
【中文标题】枕头调整图像大小 - 保持纵横比【英文标题】:Pillow Resize Image - Maintaing Aspect Ratio 【发布时间】:2020-08-12 08:41:30 【问题描述】:我有以下示例,我希望使用 Pillow 调整图像大小。
如您所见,我有一个新的宽度由用户传入,但没有高度。在保持相同纵横比的同时,如何计算出这张图片的新高度?
图像不是正方形,它们是矩形,因此高度和宽度不会相同。
orig_image = Image.open(get_full_path(file.relative_path))
new_width = int(request.args.get('w'))
# TODO resize properly, we need to work out new image height
resized_image = orig_image.resize((new_width, ), Image.ANTIALIAS)
【问题讨论】:
这能回答你的问题吗? Does Python PIL resize maintain the aspect ratio? @Dmitry 这没有回答我的问题。我需要根据传入的新宽度变量计算出新高度,并保持与以前相同的纵横比。我的图像不是正方形,所以新的高度和宽度不会相同 【参考方案1】:听起来您想从原始图像中获取原始纵横比,如下所示:
aspect_ratio = orgin_image.width / orgin_image.height
收到new_width
后,您可以像这样计算new_height
:
new_height = new_width * aspect_ratio
然后就可以正确调整图片大小了:
resized_image = orig_image.resize((new_width, new_height), Image.ANTIALIAS)
或者把它们放在一起:
orig_image = Image.open(get_full_path(file.relative_path))
aspect_ratio = orgin_image.width / organ_image.height
new_width = int(request.args.get('w'))
new_height = new_width * aspect_ratio
resized_image = orig_image.resize((new_width, new_height), Image.ANTIALIAS)
【讨论】:
所以我确实尝试过这样的事情,但这通常会导致图像宽度小于图像高度。由于这些图像是矩形,这意味着您会得到一个非常拉伸且模糊的图像。 你能分享这段代码吗?这不应该发生,因为您在这里尊重宽度和高度之间的原始关系。以上是关于枕头调整图像大小 - 保持纵横比的主要内容,如果未能解决你的问题,请参考以下文章
在 CSS FlexBox 布局中自动调整图像大小并保持纵横比?