From 81731c6e75fe904a5b44873efa361a229743d99f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Filip=20=C5=A0t=C4=9Bdronsk=C3=BD?=
Date: Mon, 2 Dec 2019 12:12:55 +0000
Subject: [PATCH] Fix: Pillow error when uploading RGBA image (#3325) (#6241)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-Off-By: Filip Štědronský
---
changelog.d/6241.bugfix | 1 +
synapse/rest/media/v1/thumbnailer.py | 5 ++++-
2 files changed, 5 insertions(+), 1 deletion(-)
create mode 100644 changelog.d/6241.bugfix
diff --git a/changelog.d/6241.bugfix b/changelog.d/6241.bugfix
new file mode 100644
index 000000000000..25109ca4a6a0
--- /dev/null
+++ b/changelog.d/6241.bugfix
@@ -0,0 +1 @@
+Fix error from the Pillow library when uploading RGBA images.
diff --git a/synapse/rest/media/v1/thumbnailer.py b/synapse/rest/media/v1/thumbnailer.py
index 8cf415e29dee..c234ea74212f 100644
--- a/synapse/rest/media/v1/thumbnailer.py
+++ b/synapse/rest/media/v1/thumbnailer.py
@@ -129,5 +129,8 @@ def crop(self, width, height, output_type):
def _encode_image(self, output_image, output_type):
output_bytes_io = BytesIO()
- output_image.save(output_bytes_io, self.FORMATS[output_type], quality=80)
+ fmt = self.FORMATS[output_type]
+ if fmt == "JPEG":
+ output_image = output_image.convert("RGB")
+ output_image.save(output_bytes_io, fmt, quality=80)
return output_bytes_io