Browse Source

Add support for EXIF data in .heic files

pull/519/head
Markus Blöchl 2 years ago
parent
commit
d23ac679bb
  1. 4
      src/sigal/gallery.py
  2. 7
      src/sigal/image.py

4
src/sigal/gallery.py

@ -264,7 +264,7 @@ class Image(Media):
datetime_format = self.settings["datetime_format"]
return (
get_exif_tags(self.raw_exif, datetime_format=datetime_format)
if self.raw_exif and self.src_ext in (".jpg", ".jpeg")
if self.raw_exif and self.src_ext in (".jpg", ".jpeg", ".heic")
else None
)
@ -289,7 +289,7 @@ class Image(Media):
@cached_property
def raw_exif(self):
"""If not `None`, contains the raw EXIF tags."""
if self.src_ext in (".jpg", ".jpeg"):
if self.src_ext in (".jpg", ".jpeg", ".heic"):
return self.file_metadata["exif"]
@cached_property

7
src/sigal/image.py

@ -225,7 +225,10 @@ def get_exif_data(filename):
try:
with warnings.catch_warnings(record=True) as caught_warnings:
exif = img._getexif() or {}
exif = {}
exifdata = img.getexif()
if exifdata:
exif = exifdata._get_merged_dict()
except ZeroDivisionError:
logger.warning("Failed to read EXIF data.")
return None
@ -295,7 +298,7 @@ def get_image_metadata(filename):
logger.error("Could not open image %s metadata: %s", filename, e)
else:
try:
if os.path.splitext(filename)[1].lower() in (".jpg", ".jpeg"):
if os.path.splitext(filename)[1].lower() in (".jpg", ".jpeg", ".heic"):
exif = get_exif_data(img)
except Exception as e:
logger.warning("Could not read EXIF data from %s: %s", filename, e)

Loading…
Cancel
Save