From c69d40f94308d52243133def3b6be7ff403df6f1 Mon Sep 17 00:00:00 2001 From: winkidney <winkidney@gmail.com> Date: Wed, 22 Aug 2018 19:34:51 +0800 Subject: [PATCH] Fixed #29705 -- Fixed ImageField RuntimeError crash for WebP files. --- django/core/files/images.py | 4 ++++ tests/files/test.webp | Bin 0 -> 26390 bytes tests/files/tests.py | 6 ++++++ 3 files changed, 10 insertions(+) create mode 100644 tests/files/test.webp diff --git a/django/core/files/images.py b/django/core/files/images.py index cdb89de2cc..579c32e11c 100644 --- a/django/core/files/images.py +++ b/django/core/files/images.py @@ -69,6 +69,10 @@ def get_image_dimensions(file_or_path, close=False): # less bytes than expected. Skip and feed more data to the # parser (ticket #24544). pass + except RuntimeError: + # e.g. "RuntimeError: could not create decoder object" for + # WebP files. A different chunk_size may work. + pass if p.image: return p.image.size chunk_size *= 2 diff --git a/tests/files/test.webp b/tests/files/test.webp new file mode 100644 index 0000000000000000000000000000000000000000..ae871d14f711f81f9040a5d557bcb36453d2aa8a GIT binary patch literal 26390 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 literal 0 HcmV?d00001 diff --git a/tests/files/tests.py b/tests/files/tests.py index 663d2d976f..b50061649a 100644 --- a/tests/files/tests.py +++ b/tests/files/tests.py @@ -343,6 +343,12 @@ class GetImageDimensionsTests(unittest.TestCase): size = images.get_image_dimensions(fh) self.assertEqual(size, (None, None)) + def test_webp(self): + img_path = os.path.join(os.path.dirname(__file__), 'test.webp') + with open(img_path, 'rb') as fh: + size = images.get_image_dimensions(fh) + self.assertEqual(size, (540, 405)) + class FileMoveSafeTests(unittest.TestCase): def test_file_move_overwrite(self):