Spaces:
Runtime error
Runtime error
| # Copy from: https://github.com/silentsokolov/flask-thumbnails/blob/master/flask_thumbnails/utils.py | |
| import hashlib | |
| from pathlib import Path | |
| from typing import Union | |
| def generate_filename(directory: Path, original_filename, *options) -> str: | |
| text = str(directory.absolute()) + original_filename | |
| for v in options: | |
| text += "%s" % v | |
| md5_hash = hashlib.md5() | |
| md5_hash.update(text.encode("utf-8")) | |
| return md5_hash.hexdigest() + ".jpg" | |
| def parse_size(size): | |
| if isinstance(size, int): | |
| # If the size parameter is a single number, assume square aspect. | |
| return [size, size] | |
| if isinstance(size, (tuple, list)): | |
| if len(size) == 1: | |
| # If single value tuple/list is provided, exand it to two elements | |
| return size + type(size)(size) | |
| return size | |
| try: | |
| thumbnail_size = [int(x) for x in size.lower().split("x", 1)] | |
| except ValueError: | |
| raise ValueError( # pylint: disable=raise-missing-from | |
| "Bad thumbnail size format. Valid format is INTxINT." | |
| ) | |
| if len(thumbnail_size) == 1: | |
| # If the size parameter only contains a single integer, assume square aspect. | |
| thumbnail_size.append(thumbnail_size[0]) | |
| return thumbnail_size | |
| def aspect_to_string(size): | |
| if isinstance(size, str): | |
| return size | |
| return "x".join(map(str, size)) | |
| IMG_SUFFIX = {".jpg", ".jpeg", ".png", ".JPG", ".JPEG", ".PNG"} | |
| def glob_img(p: Union[Path, str], recursive: bool = False): | |
| p = Path(p) | |
| if p.is_file() and p.suffix in IMG_SUFFIX: | |
| yield p | |
| else: | |
| if recursive: | |
| files = Path(p).glob("**/*.*") | |
| else: | |
| files = Path(p).glob("*.*") | |
| for it in files: | |
| if it.suffix not in IMG_SUFFIX: | |
| continue | |
| yield it | |