From 5d8b14fc9ec2cb41cf1ff43bcad557bf3e7cb968 Mon Sep 17 00:00:00 2001 From: Glandos Date: Wed, 6 Mar 2019 22:01:42 +0100 Subject: [PATCH] Cache EXIF information In case we need to call _getexif from the outside, since it's already called while parsing. cache the result in self.info. This is compatible with other file using _getexif, like WebP. --- src/PIL/JpegImagePlugin.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/PIL/JpegImagePlugin.py b/src/PIL/JpegImagePlugin.py index 2f76e9675..405301859 100644 --- a/src/PIL/JpegImagePlugin.py +++ b/src/PIL/JpegImagePlugin.py @@ -455,6 +455,12 @@ def _getexif(self): # and is likely to be replaced with something better in a future # version. + # Use the cached version if possible + try: + return self.info["parsed_exif"] + except KeyError: + pass + # The EXIF record consists of a TIFF file embedded in a JPEG # application marker (!). try: @@ -493,6 +499,8 @@ def _getexif(self): info.load(fp) exif[0x8825] = _fixup_dict(info) + # Cache the result for future use + self.info["parsed_exif"] = exif return exif