25 lines
625 B
Python
25 lines
625 B
Python
|
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)
|