批量上新前,先把图片能否正常打开、方向是否正确、长宽是多少查清楚。这个步骤不生成新图,只是给运营一张检查表。 商品图尺寸调整 如果放在验收之前,很容易把横竖混乱或打不开的原片带进后续流程。
批量上新前,先把图片能否正常打开、方向是否正确、长宽是多少查清楚。这个步骤不生成新图,只是给运营一张检查表。商品图尺寸调整如果放在验收之前,很容易把横竖混乱或打不开的原片带进后续流程。
预检结果最好写进表格,并保留原片路径与检查时间。这样后续有人调整尺寸或重新导出时,才知道异常出现在哪个阶段。脚本报告尺寸小,不等于文件一定不能用;报告方向正常,也不等于画面构图正常。自动化能把需要人工查看的候选项筛出来,但不能替代对商品内容的判断。
预检脚本
下面的示例读取 originals 文件夹中的 JPG、PNG 和 WebP。先用 verify()检查文件结构,再重新打开,使用 ImageOps.exif_transpose()按 EXIF 方向得到实际显示尺寸;Pillow Image 与 ImageOps 文档分别说明了这些方法。脚本不改动原图。
from pathlib import Path
from PIL import Image, ImageOps
for path in Path("originals").iterdir():
if path.suffix.lower() not in {".jpg", ".jpeg", ".png", ".webp"}:
continue
try:
with Image.open(path) as image:
image.verify()
with Image.open(path) as image:
oriented = ImageOps.exif_transpose(image)
print(path.name, oriented.width, oriented.height, oriented.mode)
except (OSError, ValueError) as error:
print(path.name, "无法读取", error)
实际使用时,先约定平台要求的比例和可接受尺寸,再根据脚本输出筛出需要人工检查的文件;示例没有把某个尺寸硬编码成所有平台通用规则。方向正常也不代表商品内容正确,颜色、配件和款式仍要看原片。如果后续需要做服装模特或场景图,Picset 服装组图页面是另一段视觉制作流程,不能替代这一步文件预检。
生产目录里常见两个不同的问题:文件打不开,与文件能打开但尺寸或方向不合用。前者应在制作之前拦下,避免后面流程中途报错;后者需要结合实际投放位置判断,不能只凭一个固定阈值。比如长边很大但主体占画面很小,像素数漂亮也可能不适合裁切。预检脚本给的是客观文件信息,不是质量评级。
目录遍历也要考虑边界。示例使用 iterdir() 只检查一层文件,不会递归子目录;遇到同名不同扩展名仍会分别输出;verify() 主要检查文件结构,不能发现“照片内容不是该商品”这类业务错误。若团队把素材按 SKU 分文件夹,可改用递归遍历,同时在输出里保留相对路径,否则只看文件名会丢失归属信息。
实际落地时,建议把异常分为三个队列:打不开的文件交给拍摄或素材负责人,方向和画幅异常的文件交给图像处理负责人,内容与 SKU 不符的文件留给人工核对。这样脚本输出才不会变成一大串无人处理的日志。等这些基础问题清理完,再进入背景处理、生成图或上架排版,能减少在后段发现原片问题的返工。
运行前确认已安装 Pillow,目录不存在时先创建或改为真实素材路径。输出是本地文件检查结果,不是对任何图像生成工具的实测结论。
参考资料