summaryrefslogtreecommitdiffstats
path: root/core/files.py
blob: c4f435587aa96df2787c4dc31cf58c5d595ff29b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import io

import blurhash
from django.core.files import File
from PIL import Image, ImageOps


def resize_image(image: File, *, size: tuple[int, int]) -> File:
    """
    Resizes an image to fit insize the given size (cropping one dimension
    to fit if needed)
    """
    with Image.open(image) as img:
        resized_image = ImageOps.fit(img, size)
        new_image_bytes = io.BytesIO()
        resized_image.save(new_image_bytes, format=img.format)
        return File(new_image_bytes)


def blurhash_image(image) -> str:
    """
    Returns the blurhash for an image
    """
    return blurhash.encode(image, 4, 4)