plugin XEP-0054: crop uploaded avatar to get a square
This commit is contained in:
parent
1cd755ac58
commit
25382c9db6
1 changed files with 14 additions and 2 deletions
|
|
@ -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')
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue