Slightly simplify the getexif procedure

No need for a loop here either.
Note that you could also use a dictionary rather than an if-elif tree
for the value -> rotation mapping (where valid/supported).
This commit is contained in:
mara004 2024-08-25 17:52:38 +02:00
parent 819b366bf5
commit 4fa160259d

View file

@ -22,7 +22,7 @@ import sys
import os import os
import zlib import zlib
import argparse import argparse
from PIL import Image, TiffImagePlugin, GifImagePlugin, ImageCms from PIL import Image, TiffImagePlugin, GifImagePlugin, ImageCms, ExifTags
if hasattr(GifImagePlugin, "LoadingStrategy"): if hasattr(GifImagePlugin, "LoadingStrategy"):
# Pillow 9.0.0 started emitting all frames but the first as RGB instead of # Pillow 9.0.0 started emitting all frames but the first as RGB instead of
@ -1372,11 +1372,12 @@ def get_imgmetadata(
rotation = 0 rotation = 0
if rotreq in (None, Rotation.auto, Rotation.ifvalid): if rotreq in (None, Rotation.auto, Rotation.ifvalid):
if hasattr(imgdata, "_getexif") and imgdata._getexif() is not None: exif_dict = imgdata.getexif()
for tag, value in imgdata._getexif().items(): o_key = ExifTags.Base.Orientation.value # 274 rsp. 0x112
if TAGS.get(tag, tag) == "Orientation": if exif_dict and o_key in exif_dict:
# Detailed information on EXIF rotation tags: # Detailed information on EXIF rotation tags:
# http://impulseadventure.com/photo/exif-orientation.html # http://impulseadventure.com/photo/exif-orientation.html
value = exif_dict[o_key]
if value == 1: if value == 1:
rotation = 0 rotation = 0
elif value == 6: elif value == 6: