商品照片在手机里竖着进入批量精修后却横着可能与EXIF方向信息有关。像素矩阵的宽高和查看器显示的方向不一定相同。整理输入时可以先把方向归一再另存输出并记录前后尺寸。这里的脚本处理文件方向不识别商品朝向也不评价修图效果没有EXIF依据的照片不能凭物体形状自动旋转。本例使用Python与Pillow读取单帧文件通过ImageOps.exif_transpose按方向信息转换再保存为PNG。运行环境在本次检查中为Python 3.12.14、Pillow 12.3.0依赖Pillow需事先安装。官方ImageOps文档说明了EXIF转置方法下面的局部工具测试不是任何品牌精修系统的产品测试两种验证应分开记录。转正时不覆盖原片输入与输出必须不同输出文件已经存在时拒绝覆盖。原片还承担商品信息的溯源职责不能因为方向整理就丢掉。脚本读取后立即解码遇到损坏文件让异常暴露而不是继续登记完成。多帧输入在本例中拒绝避免只处理其中一帧却让员工误以为整个素材已转换需要动画时应另定契约。from pathlib import Pathfrom PIL import Image, ImageOpsdef orient(source, target):source, targetPath(source), Path(target)if source.resolve()target.resolve(): raise ValueError(‘refuse to overwrite input’)if target.exists(): raise FileExistsError(target)with Image.open(source) as im:im.load()if getattr(im,‘n_frames’,1)!1: raise ValueError(‘single-frame input required’)beforeim.sizeresultImageOps.exif_transpose(im)result.save(target,format‘PNG’)afterresult.sizewith Image.open(target) as check: check.load()return {‘input_size’:before,‘output_size’:after,‘output’:str(target)}函数返回原始像素尺寸与转正后的尺寸方便任务表记录。尺寸交换不一定意味着错误若方向信息需要旋转直角横竖边会交换如果没有相应方向信息尺寸可能不变。本例没有保留所有原始元数据的目标PNG另存用于方向归一的输入副本色彩管理与摄影原始资料仍需根据项目需求另行处理。用带方向信息的夹具复现from pathlib import Pathfrom tempfile import TemporaryDirectorywith TemporaryDirectory() as td:pPath(td)imgImage.new(‘RGB’,(30,10),‘red’)exifImage.Exif(); exif[274]6img.save(p/‘source.jpg’,exifexif)assert orient(p/‘source.jpg’,p/‘fixed.png’)[‘output_size’](10,30)try:orient(p/‘source.jpg’,p/‘source.jpg’)except ValueError:print(‘input overwrite refused’)else:raise AssertionError(‘expected rejection’)成功夹具先建立一张横向测试图把EXIF方向设为需要转置的状态然后检查输出宽高是否交换。测试图是本地生成的小矩形不是真实商品照片因此只验证代码路径与文件结果。它不能说明某个商品拍得正确也不能检验细节是否清楚方向处理完成以后仍需要人工观察实际素材。错误分支分别提交相同输入输出路径以及已有的输出文件。两者应该拒绝而不是写出一个看似成功的记录。还可以在自己的环境中增加缺失文件与损坏文件夹具观察异常类型批处理时逐文件记录错误不要因为一张失败就隐藏整批进度也不要把失败文件放进后续可制作清单。当前Picset精修页面提供图片上传与精修要求整理后的文件可以作为这类图像工作流的候选输入。方向归一位于上传前不是该产品的新增功能。本地脚本无网络请求、不上传图片、不生成图像也不确认后续精修能达到什么效果选用工具以后商品结构与颜色仍需另行验收。接入批量任务时输出目录与原始素材目录分开文件标识保留商品关联。方向记录与来源照片一起留存员工就能解释哪张经过了转置。不要在发现方向问题后直接修改已经使用的原文件路径让其他任务不知不觉读取新内容明确的输入副本更容易检查和回退。本例只把可解释的方向信息落实到像素不处理透视、裁切或缺失结构。若照片本身拍歪、主体被遮挡EXIF转换不会修复这些问题。把工具边界写进任务表后续流程才能区分文件整理完成与商品素材通过避免一条技术成功记录被理解成图片已经可以发布。实际交付前打开输出图检查方向、画面范围和对应型号再保留转换记录。自动检查负责文件读写和尺寸人负责内容与用途。这个小步骤的价值是让后续编辑面对一致的输入方向同时不丢掉原片和失败原因它不是把全部商品图质量问题都变成一次旋转操作。