|
@@ -1,11 +1,11 @@
|
|
from django.conf import settings
|
|
from django.conf import settings
|
|
try:
|
|
try:
|
|
- import PIL
|
|
|
|
|
|
+ from PIL import Image
|
|
has_pil = True
|
|
has_pil = True
|
|
except ImportError:
|
|
except ImportError:
|
|
has_pil = False
|
|
has_pil = False
|
|
-avatar_sizes = {}
|
|
|
|
|
|
|
|
|
|
+avatar_sizes = {}
|
|
def avatar_size(size):
|
|
def avatar_size(size):
|
|
if not has_pil:
|
|
if not has_pil:
|
|
return None
|
|
return None
|
|
@@ -16,4 +16,29 @@ def avatar_size(size):
|
|
for i in settings.AVATAR_SIZES[1:]:
|
|
for i in settings.AVATAR_SIZES[1:]:
|
|
if size <= i:
|
|
if size <= i:
|
|
avatar_sizes[size] = i
|
|
avatar_sizes[size] = i
|
|
- return avatar_sizes[size]
|
|
|
|
|
|
+ return avatar_sizes[size]
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def resizeimage(image, size, target):
|
|
|
|
+ if isinstance(image, basestring):
|
|
|
|
+ image = Image.open(image)
|
|
|
|
+ info = image.info
|
|
|
|
+ format = image.format
|
|
|
|
+ if format in "GIF":
|
|
|
|
+ if 'transparency' in info:
|
|
|
|
+ image = image.resize((size, size), Image.ANTIALIAS)
|
|
|
|
+ image.save(target, image.format, transparency=info['transparency'])
|
|
|
|
+ else:
|
|
|
|
+ image = image.convert("RGB")
|
|
|
|
+ image = image.resize((size, size), Image.ANTIALIAS)
|
|
|
|
+ image = image.convert('P', palette=Image.ADAPTIVE)
|
|
|
|
+ image.save(target, image.format)
|
|
|
|
+ if format in "PNG":
|
|
|
|
+ image = image.resize((size, size), Image.ANTIALIAS)
|
|
|
|
+ image.save(target, quality=95)
|
|
|
|
+ if format == "JPEG":
|
|
|
|
+ image = image.convert("RGB")
|
|
|
|
+ image = image.resize((size, size), Image.ANTIALIAS)
|
|
|
|
+ image = image.convert('P', palette=Image.ADAPTIVE)
|
|
|
|
+ image = image.convert("RGB", dither=None)
|
|
|
|
+ image.save(target, image.format, quality=95)
|