You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PIL的thumbnail方法仅固定宽度并保持图像宽高比

固定宽度保持宽高比调整PIL图像尺寸的解决方案

你对thumbnail方法的逻辑判断是正确的:该方法会将图像等比缩放至宽、高均不超过传入的尺寸元组的阈值,因此当原图是高大于宽的竖图时,会先触达高度阈值,最终宽度就会小于你期望的256px,无法满足固定宽度的需求。

要实现固定宽度、自动计算高度保持宽高比,直接手动计算缩放比例后调用resize方法即可,实现逻辑如下:

  1. 读取原图的宽、高参数
  2. 以目标宽度为基准计算缩放比例
  3. 用原始高度乘以缩放比例得到新的高度
  4. 调用resize方法执行缩放即可

完整代码示例

from PIL import Image

def resize_to_fixed_width(img, target_width):
    # 获取原图尺寸
    original_width, original_height = img.size
    # 计算缩放比例
    scale_ratio = target_width / original_width
    # 计算新高度,取整避免参数报错
    new_height = int(round(original_height * scale_ratio))
    # 执行缩放,使用LANCZOS采样保证缩放后画质
    # 注意:PIL 9.1.0以下版本采样参数为 Image.ANTIALIAS
    resized_img = img.resize((target_width, new_height), Image.Resampling.LANCZOS)
    return resized_img

# 调用示例
if __name__ == "__main__":
    # 打开本地图像文件
    img = Image.open("your_image_path.jpg")
    # 固定宽度为256px
    img_256w = resize_to_fixed_width(img, 256)
    # 输出验证尺寸
    print(img_256w.size)
    # 保存调整后的图像
    img_256w.save("resized_image.jpg")

用上述方法处理你给出的两张测试图,得到的尺寸分别为:

  • 339x1000原图:256x755px
  • 6000x4000原图:256x171px
    完全符合固定宽度256px、保持原始宽高比的需求。

内容的提问来源于stack exchange,提问作者user17259141

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 05:36:04