Поворот родных изображений iPhone на основе информации EXIF?

Работаю над сайтом, на который пользователи могут загружать фотографии. Как многие из вас знают, неотредактированные фотографии iPhone используют EXIF-тег "Orientation" для определения ориентации. На моем ПК я не могу загружать файлы .HEIC, и я не могу загружать файлы, если я делаю manage.py runserver localhostIP:8000 по причине SSL, поэтому отладка довольно затруднительна. Если посмотреть на EXIF-данные фотографий iPhone, кажется, что это должно правильно повернуть изображения 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)

После этого вы можете делать любые сжатия/размеры/переименования или что-либо еще, для чего вы использовали PIL, но к родным фотографиям iPhone и Samsung будет применено правильное вращение.

Вернуться на верх