From: Michael Tremer Date: Tue, 7 May 2019 16:31:05 +0000 (+0100) Subject: accounts: Make avatars square X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2de3dacc150d8405e909becda0f5e1737dd76d56;p=ipfire.org.git accounts: Make avatars square Signed-off-by: Michael Tremer --- 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