diff options
author | Neeeflix <35348173+Neeeflix@users.noreply.github.com> | 2021-11-10 21:49:43 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-10 20:49:43 +0000 |
commit | 6ce19b94e84eb6ad83ef303f88d8bd59a3d414e6 (patch) | |
tree | d1e933900bafea5e02f6a0876644e275e7014c80 | |
parent | Add missing type hints to `synapse.app`. (#11287) (diff) | |
download | synapse-6ce19b94e84eb6ad83ef303f88d8bd59a3d414e6.tar.xz |
Fix error in thumbnail generation (#11288)
Signed-off-by: Jonas Zeunert <jonas@zeunert.org>
-rw-r--r-- | changelog.d/11288.bugfix | 1 | ||||
-rw-r--r-- | synapse/rest/media/v1/thumbnailer.py | 8 |
2 files changed, 5 insertions, 4 deletions
diff --git a/changelog.d/11288.bugfix b/changelog.d/11288.bugfix new file mode 100644 index 0000000000..d85b1779ba --- /dev/null +++ b/changelog.d/11288.bugfix @@ -0,0 +1 @@ +Fix a long-standing bug where uploading extremely thin images (e.g. 1000x1) would fail. Contributed by @Neeeflix. diff --git a/synapse/rest/media/v1/thumbnailer.py b/synapse/rest/media/v1/thumbnailer.py index 46701a8b83..5e17664b5b 100644 --- a/synapse/rest/media/v1/thumbnailer.py +++ b/synapse/rest/media/v1/thumbnailer.py @@ -101,8 +101,8 @@ class Thumbnailer: fits within the given rectangle:: (w_in / h_in) = (w_out / h_out) - w_out = min(w_max, h_max * (w_in / h_in)) - h_out = min(h_max, w_max * (h_in / w_in)) + w_out = max(min(w_max, h_max * (w_in / h_in)), 1) + h_out = max(min(h_max, w_max * (h_in / w_in)), 1) Args: max_width: The largest possible width. @@ -110,9 +110,9 @@ class Thumbnailer: """ if max_width * self.height < max_height * self.width: - return max_width, (max_width * self.height) // self.width + return max_width, max((max_width * self.height) // self.width, 1) else: - return (max_height * self.width) // self.height, max_height + return max((max_height * self.width) // self.height, 1), max_height def _resize(self, width: int, height: int) -> Image.Image: # 1-bit or 8-bit color palette images need converting to RGB |