plugin XEP-0054: crop uploaded avatar to get a square

This commit is contained in:
souliane 2014-06-19 20:33:42 +02:00
commit 25382c9db6

View file

@ -46,6 +46,7 @@ except ImportError:
from wokkel.subprotocols import XMPPHandler
AVATAR_PATH = "avatars"
AVATAR_DIM = (64, 64)
IQ_GET = '/iq[@type="get"]'
NS_VCARD = 'vcard-temp'
@ -242,8 +243,19 @@ class XEP_0054(object):
except IOError:
return Failure(exceptions.DataError("Can't open image"))
if img.size != (64, 64):
img = img.resize((64, 64))
if img.size != AVATAR_DIM:
img.thumbnail(AVATAR_DIM, Image.ANTIALIAS)
if img.size[0] != img.size[1]: # we need to crop first
left, upper = (0, 0)
right, lower = img.size
offset = abs(right - lower) / 2
if right == min(img.size):
upper += offset
lower -= offset
else:
left += offset
right -= offset
img = img.crop((left, upper, right, lower))
img_buf = StringIO()
img.save(img_buf, 'PNG')