# Standard library imports. from pathlib import Path # External library imports. from PIL import Image # Django imports. from django.conf import settings ########################################################################################### # Constants. # ########################################################################################### THUMB_SIZE = (128, 128) ########################################################################################### # Helper functions. # ########################################################################################### def make_thumbnail(image): """ Creates a thumbnail in the corresponding THUMBNAILS_ROOT directory for the given image. :param image: A pathlib.Path instance pointing to a file inside the GALLERY_ROOT directory. """ if image.exists(): thumb_path = Path(str(image).replace(str(settings.GALLERY_ROOT), str(settings.THUMBNAILS_ROOT))) thumb_path.parent.mkdir(parents = True, exist_ok = True) if not thumb_path.exists(): try: with Image.open(str(image)) as pilimg: pilimg.thumbnail(THUMB_SIZE) pilimg.save(str(thumb_path)) except: pass