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

如何用Python Pillow将图片按比例适配至更大尺寸画布?

解决方案:将图片等比例适配到512×512画布

你的代码没有实现图片等比例放大的逻辑,只是直接把原图居中粘贴到了画布上,所以没法让小图片尽可能大。以下是修正后的代码:

import math
from PIL import Image

image = Image.open(input_path)
canvas_w, canvas_h = 512, 512
img_w, img_h = image.size

# 计算等比例缩放系数,取宽高方向的最小值,保证图片完全适配画布且尽可能大
scale = min(canvas_w / img_w, canvas_h / img_h)
# 计算缩放后的图片尺寸(取整)
new_w = int(math.floor(img_w * scale))
new_h = int(math.floor(img_h * scale))

# 用高画质算法缩放图片
scaled_image = image.resize((new_w, new_h), Image.Resampling.LANCZOS)

# 计算缩放后图片的居中偏移量
offset_x = (canvas_w - new_w) // 2
offset_y = (canvas_h - new_h) // 2

# 创建目标画布,背景保持透明(需要白色背景可将(255,255,255,0)改为(255,255,255))
output_image = Image.new(image.mode, (canvas_w, canvas_h), (255, 255, 255, 0))
output_image.paste(scaled_image, (offset_x, offset_y))

output_image.save(output_path)

核心改动说明:

  • 新增等比例缩放逻辑:通过计算画布与原图的宽高比例,取最小值作为缩放系数,确保图片不会超出画布同时最大化显示
  • 使用Image.Resampling.LANCZOS缩放:这是PIL中画质更优的缩放算法,能更好保留图片细节
  • 重新计算偏移量:基于缩放后的图片尺寸计算居中位置,保证图片在画布中居中显示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:40:29