forked from MirrorHub/synapse
Fix error in thumbnail generation (#11288)
Signed-off-by: Jonas Zeunert <jonas@zeunert.org>
This commit is contained in:
parent
5cace20bf1
commit
6ce19b94e8
2 changed files with 5 additions and 4 deletions
1
changelog.d/11288.bugfix
Normal file
1
changelog.d/11288.bugfix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Fix a long-standing bug where uploading extremely thin images (e.g. 1000x1) would fail. Contributed by @Neeeflix.
|
|
@ -101,8 +101,8 @@ class Thumbnailer:
|
||||||
fits within the given rectangle::
|
fits within the given rectangle::
|
||||||
|
|
||||||
(w_in / h_in) = (w_out / h_out)
|
(w_in / h_in) = (w_out / h_out)
|
||||||
w_out = min(w_max, h_max * (w_in / h_in))
|
w_out = max(min(w_max, h_max * (w_in / h_in)), 1)
|
||||||
h_out = min(h_max, w_max * (h_in / w_in))
|
h_out = max(min(h_max, w_max * (h_in / w_in)), 1)
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
max_width: The largest possible width.
|
max_width: The largest possible width.
|
||||||
|
@ -110,9 +110,9 @@ class Thumbnailer:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if max_width * self.height < max_height * self.width:
|
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:
|
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:
|
def _resize(self, width: int, height: int) -> Image.Image:
|
||||||
# 1-bit or 8-bit color palette images need converting to RGB
|
# 1-bit or 8-bit color palette images need converting to RGB
|
||||||
|
|
Loading…
Reference in a new issue