From cdd6192c42241cda0f875f8ce1dd2ff1c4b31c8e Mon Sep 17 00:00:00 2001 From: Birte Kristina Friesel Date: Wed, 15 May 2024 21:55:34 +0200 Subject: Add support for .CR3 files --- bin/pyggle | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 55 insertions(+), 3 deletions(-) (limited to 'bin') diff --git a/bin/pyggle b/bin/pyggle index 6c6cc87..be4a028 100755 --- a/bin/pyggle +++ b/bin/pyggle @@ -16,6 +16,7 @@ from progress.bar import Bar import shutil import subprocess import sys +import tempfile geocoder = None location_cache = dict() @@ -294,7 +295,7 @@ class Thumbnail: im = im.convert("RGB") im.save(self.thumbname, "JPEG") - if filename.lower().endswith(".cr2"): + if filename.lower().endswith((".cr2", ".cr3")): try: jpegname = f".thumbnails/{thumb_filename}.p.jpg" subprocess.run( @@ -308,6 +309,18 @@ class Thumbnail: filename, ] ) + # JpgFromRaw tends to have higher resolution, so overwrite PreviewImage if it is present + subprocess.run( + [ + "exiftool", + "-quiet", + "-binary", + "-tagOut!", + jpegname, + "-JpgFromRaw", + filename, + ] + ) self.jpegname = jpegname except FileNotFoundError: pass @@ -760,10 +773,49 @@ if __name__ == "__main__": try: im = Image.open(f".thumbnail.for.{filename}") except FileNotFoundError: - continue + im = None except PIL.UnidentifiedImageError: # perhaps raise a warning? - continue + im = None + + if not im: + try: + _, jpegname = tempfile.mkstemp(suffix="jpg") + subprocess.run( + [ + "exiftool", + "-quiet", + "-binary", + "-tagOut!", + jpegname, + "-PreviewImage", + filename, + ] + ) + # JpgFromRaw tends to have higher resolution, so overwrite PreviewImage if it is present + subprocess.run( + [ + "exiftool", + "-quiet", + "-binary", + "-tagOut!", + jpegname, + "-JpgFromRaw", + filename, + ] + ) + + im = Image.open(jpegname) + os.remove(jpegname) + except FileNotFoundError: + im = None + except PIL.UnidentifiedImageError: + # perhaps raise a warning? + os.remove(jpegname) + im = None + + if not im: + continue try: im_copy = im.copy() -- cgit v1.2.3