PIL打开后图像自动旋转问题

在使用python批量处理照片的时候发现了一个问题:

PIL库打开图像再保存后图像的方向会不同

1
2
3
img = Image.open("/path/to/img")

img.save("./origin.jpg")

查询后得知jpg图像会有exif头,可能会有图像保存图像在一个方向,而图像头会有一个参数使得查看的时候旋转一个角度。就比如相机拍照的时候,记录数据应该是正常记录,但是我们拍照时有时是竖着的,有时是横着的,这个数据可能是通过相机的重力感应记录图像是否需要旋转为竖着。

但是PIL不会自动根据这个记录来自动旋转,可以通过如下操作手动旋转

1
2
3
from PIL import Image, ImageOps
im = Image.open("file.jpg")
im = ImageOps.exif_transpose(im)

参考:PIL.Image.open is rotating jpeg images · Issue #4703 · python-pillow/Pillow (github.com)