1
Fork 0
This repository has been archived on 2023-03-26. You can view files and clone it, but cannot push or open issues or pull requests.
theorangeone.net-legacy/plugins/image_resizer.py
2016-08-26 22:20:31 +01:00

68 lines
1.9 KiB
Python

import os
from PIL import Image
from resizeimage import resizeimage
OUTPUT_DIR = os.path.realpath('theme/static/build/img')
ORIGINAL_IMAGE_PATH = os.path.realpath('content/assets/img/logo-transparent.png')
FAVICON_SIZES = (
(16, 16),
(32, 32),
(96, 96),
(128, 128),
(196, 196)
)
APPLE_SIZES = (
(152, 152),
(144, 144),
(120, 120),
(114, 114),
(72, 72),
(60, 60),
(57, 57)
)
def merge_dicts(*dict_args):
result = {}
for dictionary in dict_args:
result.update(dictionary)
return result
def get_size_string(w, h):
return "{0}x{1}".format(w, h)
def build_apple_filenames():
return {s: "apple-touch-icon-{0}.png".format(get_size_string(*s)) for s in FAVICON_SIZES}
def build_favicon_filenames():
return {s: "favicon-{0}.png".format(get_size_string(*s)) for s in APPLE_SIZES}
def get_all_files():
favicon_filenames = build_favicon_filenames()
apple_filenames = build_apple_filenames()
return merge_dicts(favicon_filenames, apple_filenames)
def generate():
for size, image_file in get_all_files().items():
try:
os.remove(os.path.join(OUTPUT_DIR, image_file))
except FileNotFoundError:
continue
with open(ORIGINAL_IMAGE_PATH, 'rb') as original_image_file:
with Image.open(original_image_file) as original_image:
for size, image_name in get_all_files().items():
new_image = resizeimage.resize_contain(original_image, size)
new_image.save(os.path.join(OUTPUT_DIR, image_name), original_image.format)
favicon_image_details = [('icon', get_size_string(*size), filename) for size, filename in build_favicon_filenames().items()]
apple_image_details = [('apple-touch-icon-precomposed', get_size_string(*size), filename) for size, filename in build_apple_filenames().items()]
return favicon_image_details + apple_image_details