Python 用 Pillow 批量给商品图统一尺寸、加白底与规范命名

举报
yd_295675147 发表于 2026/11/04 00:15:24 2026/11/04
【摘要】 跨境电商上架前,商品图尺寸不一、白底不纯、命名混乱会直接拖慢审核和排版。本文用 Python + Pillow 做一套可复用的批量处理流程:统一画布、等比缩放居中贴白底、按 SKU 规范命名并输出质检清单。

跨境电商上架时,商品图最常见的三个问题是:尺寸不统一、背景不是纯白、文件名没有规律。靠人工一张张在修图软件里改,几十个 SKU 还能应付,上百个 SKU 就会出现漏改、改错和重复劳动。本文介绍一套用 Python 和 Pillow 实现的批量处理流程,目标一次跑通、多次复用。


一、先定规范,再写代码


先把目标写死,避免每批图标准漂移。我的常用规范是:画布 1000×1000,背景纯白(255,255,255),主体完整入画、居中,四边至少留 30 像素边距;输出 JPEG,质量 90;文件名按“SKU_序号.jpg”命名,例如 ABC123_01.jpg。规范定好后,代码只做一件事:把任意输入图规范化成这个标准。


二、核心思路:等比缩放,居中贴白底


不要直接拉伸原图,否则商品会变形。正确做法是:先按原图比例算出放进 1000×1000 画布的最大尺寸,再新建一张纯白画布,把缩放后的图粘贴到正中央。遇到 PNG 透明图,要先把它合成到白底上,否则透明区域在转 JPEG 时可能变黑。遇到 CMYK 或带 ICC 配置的图片,先转成 RGB,避免颜色偏差。


三、一个可直接复用的处理函数


from PIL import Image

from pathlib import Path


def normalize_image(src: Path, dst: Path, size: int = 1000):

    with Image.open(src) as im:

        im = im.convert("RGBA")

        background = Image.new("RGBA", (size, size), (255, 255, 255, 255))

        im.thumbnail((size - 60, size - 60), Image.LANCZOS)

        x = (size - im.width) // 2

        y = (size - im.height) // 2

        background.alpha_composite(im, (x, y))

        background.convert("RGB").save(dst, "JPEG", quality=90)


thumbnail 会保持比例缩放,alpha_composite 能正确处理透明通道,60 像素的预留空间就是四边边距的来源。


四、批量遍历与规范命名


批量时按文件夹遍历,跳过非图片文件和已经处理过的文件,用 SKU 做前缀、按顺序编号。建议先在副本目录输出,不要直接覆盖原图;同时记录一张清单,包含原文件名、新文件名、原尺寸和输出尺寸,方便回查。处理完后抽查三类图:横图、竖图和透明底图,确认没有变形、没有黑边、主体没有被裁掉。


五、容易踩的坑


第一,JPEG 不支持透明,透明图必须先合白底再保存。第二,图片方向信息在 EXIF 里,直接读取可能出现横竖颠倒,处理前先用 ImageOps.exif_transpose 校正方向。第三,不要用文件名里的中文、空格和特殊符号做 SKU,跨境平台和后续脚本都更容易出错。第四,批量跑之前先拿 5 张图做小样本测试,确认规范无误再全量执行。


把规范、代码和质检清单固定下来之后,新增一批商品图就只是换一个输入文件夹、跑一次脚本的事,图片质量和命名一致性也更容易长期保持。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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