Wenn eine JPEG-Datei mit PIL (Pillow) geöffnet wird, wird dies nicht berücksichtigt, auch wenn ein Wert im Orientierungs-Tag von EXIF festgelegt ist. Ein Implementierungsbeispiel zum Generieren von Daten nach dem Ausführen einer Rotations- / Flip-Verarbeitung gemäß dem im Orientierungs-Tag festgelegten Wert.
from PIL import Image
file_path = "Pfad der JPEG-Bilddatei"
#Verarbeitung gemäß dem Orientierungs-Tag-Wert
#Der Drehwinkel in PIL ist gegen den Uhrzeigersinn positiv
convert_image = {
1: lambda img: img,
2: lambda img: img.transpose(Image.FLIP_LEFT_RIGHT), #Horizontal spiegeln
3: lambda img: img.transpose(Image.ROTATE_180), #180 Grad Drehung
4: lambda img: img.transpose(Image.FLIP_TOP_BOTTOM), #auf den Kopf stellen
5: lambda img: img.transpose(Image.FLIP_LEFT_RIGHT).transpose(Pillow.ROTATE_90), #Nach links und rechts drehen und um 90 Grad gegen den Uhrzeigersinn drehen
6: lambda img: img.transpose(Image.ROTATE_270), #270 Grad gegen den Uhrzeigersinn drehen
7: lambda img: img.transpose(Image.FLIP_LEFT_RIGHT).transpose(Pillow.ROTATE_270), #Umkehrung von links nach rechts und Drehung gegen den Uhrzeigersinn um 270 Grad
8: lambda img: img.transpose(Image.ROTATE_90), #90 Grad gegen den Uhrzeigersinn drehen
}
img = Image.open(file_path)
exif = img._getexif()
orientation = exif.get(0x112, 1)
new_img = convert_image[orientation](img)
Klicken Sie hier für die Definition des EXIF-Standards. http://www.cipa.jp/std/documents/j/DC-008-2012_J.pdf
Die Definition des Werts des Orientierungs-Tags von EXIF ist jedoch nur anhand der Erklärung schwer zu verstehen. Es gibt verschiedene Seiten, die durch Suchen auf leicht verständliche Weise erklärt werden. Zum Beispiel hier. http://hackmylife.net/archives/7400448.html