From 27a0339d647a1368424aebf092219141bf478ee4 Mon Sep 17 00:00:00 2001 From: k128 Date: Mon, 31 Jul 2023 15:14:22 -0400 Subject: [PATCH 1/6] Update WebPImagePlugin.py Automatically load duration --- src/PIL/WebPImagePlugin.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/PIL/WebPImagePlugin.py b/src/PIL/WebPImagePlugin.py index 028e5d2bdd9..f6b6332a867 100644 --- a/src/PIL/WebPImagePlugin.py +++ b/src/PIL/WebPImagePlugin.py @@ -74,6 +74,9 @@ def _open(self): self.info["background"] = (bg_r, bg_g, bg_b, bg_a) self.n_frames = frame_count self.is_animated = self.n_frames > 1 + _,ts=self._decoder.get_next() + if ts: + self.info["duration"]=ts self._mode = "RGB" if mode == "RGBX" else mode self.rawmode = mode self.tile = [] From 2f5493a5f0a7bdecf728b32839a5ce6809c3052c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 19:19:54 +0000 Subject: [PATCH 2/6] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/PIL/WebPImagePlugin.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/PIL/WebPImagePlugin.py b/src/PIL/WebPImagePlugin.py index f6b6332a867..fc351500381 100644 --- a/src/PIL/WebPImagePlugin.py +++ b/src/PIL/WebPImagePlugin.py @@ -74,9 +74,9 @@ def _open(self): self.info["background"] = (bg_r, bg_g, bg_b, bg_a) self.n_frames = frame_count self.is_animated = self.n_frames > 1 - _,ts=self._decoder.get_next() + _, ts = self._decoder.get_next() if ts: - self.info["duration"]=ts + self.info["duration"] = ts self._mode = "RGB" if mode == "RGBX" else mode self.rawmode = mode self.tile = [] From 15e52290303008c0888dc17aab069edb5cff3a25 Mon Sep 17 00:00:00 2001 From: k128 Date: Mon, 31 Jul 2023 15:32:05 -0400 Subject: [PATCH 3/6] Update WebPImagePlugin.py --- src/PIL/WebPImagePlugin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PIL/WebPImagePlugin.py b/src/PIL/WebPImagePlugin.py index fc351500381..47227651b27 100644 --- a/src/PIL/WebPImagePlugin.py +++ b/src/PIL/WebPImagePlugin.py @@ -93,7 +93,7 @@ def _open(self): self.info["xmp"] = xmp # Initialize seek state - self._reset(reset=False) + self._reset(reset=True) def _getexif(self): if "exif" not in self.info: From 230a2e3a339e9f6f73c08ea4e16429aa68eef723 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Tue, 1 Aug 2023 19:15:15 +1000 Subject: [PATCH 4/6] If "reset" is always true, then the argument can be removed --- src/PIL/WebPImagePlugin.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/PIL/WebPImagePlugin.py b/src/PIL/WebPImagePlugin.py index 47227651b27..aadc71f62c8 100644 --- a/src/PIL/WebPImagePlugin.py +++ b/src/PIL/WebPImagePlugin.py @@ -93,7 +93,7 @@ def _open(self): self.info["xmp"] = xmp # Initialize seek state - self._reset(reset=True) + self._reset() def _getexif(self): if "exif" not in self.info: @@ -116,9 +116,8 @@ def seek(self, frame): # Set logical frame to requested position self.__logical_frame = frame - def _reset(self, reset=True): - if reset: - self._decoder.reset() + def _reset(self): + self._decoder.reset() self.__physical_frame = 0 self.__loaded = -1 self.__timestamp = 0 From 6115d5957f3a53a33675fdede51469cc02533649 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Tue, 1 Aug 2023 19:16:28 +1000 Subject: [PATCH 5/6] _decoder.get_next() may return None --- src/PIL/WebPImagePlugin.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/PIL/WebPImagePlugin.py b/src/PIL/WebPImagePlugin.py index aadc71f62c8..a6e1a2a00c5 100644 --- a/src/PIL/WebPImagePlugin.py +++ b/src/PIL/WebPImagePlugin.py @@ -74,9 +74,9 @@ def _open(self): self.info["background"] = (bg_r, bg_g, bg_b, bg_a) self.n_frames = frame_count self.is_animated = self.n_frames > 1 - _, ts = self._decoder.get_next() - if ts: - self.info["duration"] = ts + ret = self._decoder.get_next() + if ret is not None: + self.info["duration"] = ret[1] self._mode = "RGB" if mode == "RGBX" else mode self.rawmode = mode self.tile = [] From 60433d5f37e93e462584b0e5997dad9b43cd853a Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Tue, 1 Aug 2023 19:17:54 +1000 Subject: [PATCH 6/6] Added test --- Tests/test_file_webp.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Tests/test_file_webp.py b/Tests/test_file_webp.py index a7b6c735a69..3832441c02d 100644 --- a/Tests/test_file_webp.py +++ b/Tests/test_file_webp.py @@ -233,5 +233,4 @@ def test_duration(self, tmp_path): im.save(out_webp, save_all=True) with Image.open(out_webp) as reloaded: - reloaded.load() assert reloaded.info["duration"] == 1000