用 Python + Pillow 批量统一商品主图尺寸与白底:跨境电商图片处理小技巧

举报
yd_295675147 发表于 2026/11/06 00:31:22 2026/11/06
【摘要】 用 Python + Pillow 十几行代码批量统一跨境电商商品主图:等比缩放不拉伸、白底画布居中粘贴,附完整可运行脚本、各平台尺寸速查与 5 个常见坑。

为什么主图要统一尺寸和白底

做跨境电商的朋友都遇到过这种情况:亚马逊要求主图纯白背景、建议 2000×2000 像素,Shopee、Lazada、速卖通也都有类似的正方形、白底要求。图片尺寸不一、白底不纯,不仅影响搜索权重,还会让店铺看起来很不专业。

人工一张张在修图软件里改,几十上百个 SKU 根本改不完。其实用 Python + Pillow 写个十几行的小脚本,就能批量搞定。

处理思路:等比缩放 + 白底画布

核心就两步:

  1. 把原图按比例缩放到目标尺寸以内,绝不拉伸变形;
  2. 新建一张纯白正方形画布,把缩放后的图居中贴上去,多余的部分自然就是白底。

这样不管原图是横图、竖图还是方图,出来的都是统一尺寸、白底、主体居中的主图。

环境准备

pip install Pillow

只需要 Pillow 一个库,不用装 Photoshop,也不用学复杂的修图软件。

单张处理的核心代码

from PIL import Image, ImageOps


def make_main_image(src_path, dst_path, size=1000, padding=40,
                    bg_color=(255, 255, 255)):
    # 打开图片并修正 EXIF 方向,避免手机拍的图横过来
    img = Image.open(src_path)
    img = ImageOps.exif_transpose(img)
    # 统一转成 RGB,去掉 PNG 的透明通道,避免透明变黑底
    img = img.convert("RGB")
    # 目标区域 = 画布尺寸减去四边留白
    box = size - padding * 2
    # thumbnail 等比缩放,只缩小不放大,不改变宽高比
    img.thumbnail((box, box), Image.LANCZOS)
    # 新建纯白底画布
    canvas = Image.new("RGB", (size, size), bg_color)
    # 居中粘贴
    x = (size - img.width) // 2
    y = (size - img.height) // 2
    canvas.paste(img, (x, y))
    canvas.save(dst_path, "JPEG", quality=95)

几个关键点:

  • ImageOps.exif_transpose:修正手机照片的 EXIF 方向,不然竖拍的图可能横过来;
  • convert("RGB"):处理 PNG 的透明通道,避免透明部分在转 JPG 后变黑;
  • thumbnail:等比缩放,只缩小不放大,不会拉伸变形;
  • Image.LANCZOS:高质量重采样,缩小后边缘更干净;
  • padding:四边留白,让主体不贴边,视觉上更舒服。

批量处理整个文件夹

from pathlib import Path

SRC_DIR = Path("input")    # 原图文件夹
DST_DIR = Path("output")   # 输出文件夹
DST_DIR.mkdir(exist_ok=True)

SUPPORT_EXT = {".jpg", ".jpeg", ".png", ".webp", ".bmp"}

for src in sorted(SRC_DIR.iterdir()):
    if src.suffix.lower() not in SUPPORT_EXT:
        continue
    dst = DST_DIR / (src.stem + ".jpg")
    try:
        make_main_image(src, dst, size=1000, padding=40)
        print(f"已处理:{src.name} -> {dst.name}")
    except Exception as e:
        print(f"处理失败:{src.name},原因:{e}")

把原图丢进 input 文件夹,运行 python batch_images.py,一个文件夹的图片几秒钟就全部处理完,输出到 output 文件夹,文件名保持不变。

原图背景不是白色的怎么办

上面的方法是“白底画布”,适合原图主体已经抠好、或者本身就是浅色背景的场景。如果原图背景是杂乱的实景,有两个选择:

  1. 拍摄时就用纯色背景布或白墙拍,从源头解决;
  2. 进阶做法:用 rembg 自动抠图去背景,再贴到白底画布上:
pip install rembg onnxruntime
from rembg import remove

img = Image.open(src_path)
img = remove(img)  # 返回带透明通道的图
img = img.convert("RGBA")
# 再按同样的方法贴到白底画布上

抠图质量取决于原图主体与背景的对比度,边缘复杂的商品(毛绒、透明材质)建议人工复查一遍。

各平台主图尺寸速查

  • 亚马逊:建议 2000×2000 像素以上,支持缩放功能;
  • Shopee:建议 800×800,正方形;
  • Lazada:建议 800×800,白底;
  • 速卖通:建议 800×800 以上。

把 size 参数改成对应数值,同一套代码就能出不同平台的版本。

容易踩的几个坑

  1. 直接 resize 拉伸:会改变比例,商品变形,千万别用 resize 硬改;
  2. 忽略 EXIF 方向:手机竖拍的图可能横过来,先用 exif_transpose 修正;
  3. PNG 透明通道直接转 JPG:透明部分会变黑,一定要先贴到白底上再保存;
  4. 保存质量太低:quality 建议 90 以上,否则放大后模糊;
  5. 原图太小:低于 500 像素的原图强行放大到 1000 会糊,thumbnail 只缩小不放大的策略可以避免越放越糊。

小结

批量统一主图不用学复杂的修图软件,十几行 Python 代码就能解决:等比缩放 + 白底画布 + 居中粘贴。把脚本保存下来,每次上新直接丢文件夹里跑一遍,主图规范就统一了,省下来的时间可以多花在选品和运营上。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。