plupload V2.3.9设置preserve_headers=false时EXIF旋转异常问题
关于plupload处理EXIF Orientation=6图片的旋转异常问题
测试背景与现象
- 测试图片:EXIF Orientation标记为6(顺时针旋转90度),ExifTool检测数据如下:
---- ExifTool ---- ExifTool Version Number : 12.44 ---- File ---- File Name : orig.jpg Image Width : 4032 Image Height : 3024 ---- EXIF ---- Orientation : Rotate 90 CW Exif Image Width : 4032 Exif Image Height : 3024 ---- Composite ---- Image Size : 4032x3024
- 关闭自动旋转后,IrfanView显示图片顶部朝左,需顺时针旋转90度才能正常显示。
- plupload配置:使用V2.3.9版本,resize参数设置如下:
resize: { width: 5000, height: 5000, preserve_headers: false }
- 异常结果:上传后EXIF头被成功去除,但图片被旋转180度(IrfanView显示顶部朝右),与预期的“去除EXIF后自动顺时针旋转90度”不符;使用exif-samples库的landscape_6样本测试,得到完全相同的异常结果。
问题原因
这是plupload V2.3.9版本在处理EXIF Orientation标记时的已知bug,并非操作错误。
plupload的resize模块在preserve_headers=false时,会尝试根据Orientation值调整图片像素的物理方向,但针对Orientation=6(顺时针90度)的场景,内部旋转逻辑存在偏差,最终错误输出了旋转180度的图片,而非正确的顺时针90度修正。
解决方案
- 升级plupload版本:换用plupload V3.x及以上版本,该问题已被官方修复;
- 前端预处理(V2.3.9兼容):在传入plupload前,通过Canvas API手动修正图片方向,再进行上传处理。
内容的提问来源于stack exchange,提问作者shortmort37
相关产品推荐
相关产品推荐

