]> git.ipfire.org Git - ipfire.org.git/commitdiff
accounts: Make avatars square
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 7 May 2019 16:31:05 +0000 (17:31 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 7 May 2019 16:31:05 +0000 (17:31 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/backend/accounts.py
src/backend/util.py

index 8f6659bcd64b9982c31e0ab0329198e69b915510..42cb72de9cec5429a1ca1804be5bac251bd1d9a4 100644 (file)
@@ -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)
index aaa2b62c1e6a5964ffb832d16c284834dc03d03d..5ad6cb618bb1bd0370b8ae38c2d71886149e35a6 100644 (file)
@@ -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