41 lines
980 B
Python
41 lines
980 B
Python
"""Definition of put_image function."""
|
|
|
|
import logging
|
|
import os
|
|
from hashlib import md5
|
|
from io import BytesIO
|
|
|
|
from minio import Minio
|
|
from PIL import Image
|
|
|
|
from .put import put
|
|
|
|
|
|
def put_image(
|
|
client: Minio,
|
|
image: Image.Image,
|
|
) -> str:
|
|
"""Put image in image subfolder in bucket in Minio and return MD5 checksum
|
|
used as object name."""
|
|
assert isinstance(client, Minio)
|
|
assert isinstance(image, Image.Image)
|
|
# get bucket name from env
|
|
bucket_name = os.getenv('MINIO_BUCKET_NAME', default='')
|
|
assert len(bucket_name) > 0
|
|
# save data to buffer
|
|
buffer = BytesIO()
|
|
image.save(buffer, 'png')
|
|
# get md5 of buffer
|
|
checksum = md5(buffer.getbuffer()).hexdigest()
|
|
# set object name
|
|
object_name = f'images/{checksum}'
|
|
# send data to bucket
|
|
put(
|
|
client=client,
|
|
buffer=buffer,
|
|
bucket_name=bucket_name,
|
|
object_name=object_name,
|
|
)
|
|
logging.debug('finished')
|
|
return checksum
|