From 2de3dacc150d8405e909becda0f5e1737dd76d56 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 7 May 2019 17:31:05 +0100 Subject: [PATCH] accounts: Make avatars square Signed-off-by: Michael Tremer --- src/backend/accounts.py | 2 +- src/backend/util.py | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/backend/accounts.py b/src/backend/accounts.py index 8f6659bc..42cb72de 100644 --- a/src/backend/accounts.py +++ b/src/backend/accounts.py @@ -779,7 +779,7 @@ class Account(Object): return avatar # Generate a new thumbnail - avatar = util.generate_thumbnail(photo, size) + avatar = util.generate_thumbnail(photo, size, square=True) # Save to cache for 15m self.memcache.set("accounts:%s:avatar:%s" % (self.uid, size), avatar, 900) diff --git a/src/backend/util.py b/src/backend/util.py index aaa2b62c..5ad6cb61 100644 --- a/src/backend/util.py +++ b/src/backend/util.py @@ -75,7 +75,7 @@ def normalize(s): return "-".join(s.split()) -def generate_thumbnail(data, size, **args): +def generate_thumbnail(data, size, square=False, **args): assert data, "No image data received" image = PIL.Image.open(io.BytesIO(data)) @@ -99,7 +99,10 @@ def generate_thumbnail(data, size, **args): image = flattened_image.convert("RGB") # Resize the image to the desired resolution - image.thumbnail((size, size), PIL.Image.LANCZOS) + if square: + thumbnail = PIL.ImageOps.fit(image, (size, size), PIL.Image.LANCZOS) + else: + image.thumbnail((size, size), PIL.Image.LANCZOS) if image.format == "JPEG": # Apply a gaussian blur to make compression easier -- 2.47.3