根据 EXIF 信息旋转原生 iPhone 图像?

Rotate native iPhone images based on EXIF info?

正在开发一个用户可以上传照片的网站。 正如你们许多人所知,未经编辑的 iPhone 照片使用“方向”EXIF 标签来确定方向。在我的 PC 上,我无法上传 .HEIC 文件,而且由于 SSL 原因,如果我执行 manage.py runserver localhostIP:8000 也无法上传文件,因此很难调试。查看 iPhone 照片上的 EXIF 数据,这似乎应该正确旋转 iPhone 图像,但它们仍然以错误的方向上传,我无法真正查看什么 EXIF 标签 iPhone 图片正在后台返回。

im = Image.open(self.content_media)
img_exif = im.getexif()
for key, val in img_exif.items():
    print(val)
    if "rotate 90 cw" in str(val).lower():
        im.rotate(90)
    if "rotate 180 cw" in str(val).lower():
        im.rotate(180)
    if "rotate 270 cw" in str(val).lower():
        im.rotate(270)

这是我的一个具有媒体的模型的保存方法。

from PIL import Image, ImageOps

image = Image.open(foo)
im = ImageOps.exif_transpose(image)

然后您可以做任何事情 compression/resizing/renaming 或任何您使用 PIL 的目的,但原生 iPhone 和三星照片将应用适当的旋转。