12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- from django.conf import settings
- try:
- from PIL import Image
- has_pil = True
- except ImportError:
- has_pil = False
- avatar_sizes = {}
- def avatar_size(size):
- if not has_pil:
- return None
- try:
- return avatar_sizes[size]
- except KeyError:
- avatar_sizes[size] = None
- for i in settings.AVATAR_SIZES[1:]:
- if size <= i:
- avatar_sizes[size] = i
- return avatar_sizes[size]
- def resizeimage(image, size, target, info=None, format=None):
- if isinstance(image, basestring):
- image = Image.open(image)
- if not info:
- info = image.info
- if not format:
- format = image.format
- if format == "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 == "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)
|