Electrify/image_utils.py
2016-02-08 11:03:34 -07:00

39 lines
1.2 KiB
Python

from io import BytesIO
try:
from PIL import Image as im
IMAGE_UTILS_AVAILABLE = True
Image = im.open
def resize(image, size):
output = BytesIO()
back = im.new('RGBA', size, (0,0,0,0))
image.thumbnail(size, im.ANTIALIAS)
offset = [0,0]
if image.size[0] >= image.size[1]:
offset[1] = int(back.size[1]/2-image.size[1]/2)
else:
offset[0] = int(back.size[0]/2-image.size[0]/2)
back.paste(image, tuple(offset))
back.save(output, image.format)
contents = output.getvalue()
output.close()
return contents
except ImportError:
IMAGE_UTILS_AVAILABLE = False
LARGEST_ICON_SIZE = 1024
SMALLEST_ICON_SIZE = 16
sizes = [LARGEST_ICON_SIZE,512,256,128,48,32,SMALLEST_ICON_SIZE]
def nearest_icon_size(width, height):
maximum = max(width, height)
if maximum >= LARGEST_ICON_SIZE:
return LARGEST_ICON_SIZE
if maximum <= SMALLEST_ICON_SIZE:
return SMALLEST_ICON_SIZE
for i in range(len(sizes)-1):
current_size = sizes[i]
next_size = sizes[i+1]
if current_size > maximum >= next_size:
return next_size