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)