damientheodore's picture
AutoExpress Docker version 1.0
424f388
Raw
History Blame Contribute Delete
1.28 kB
import io
import base64
from PIL import Image, PngImagePlugin
from loguru import logger as log
import pathlib
def raw_b64_img(input_image):
# Convert the input image to base64 format (SD api accepts base64)
with Image.open(input_image) as image:
with io.BytesIO() as img_buffer:
# Save the image to a bytes buffer
image.save(
img_buffer, format=input_image.suffix[1:]
) # suffix returns .png -> remove . to get only png
# Encode the image to base64 and decode to a string in one step
input_img_base64_str = base64.b64encode(img_buffer.getvalue()).decode(
"utf-8"
)
# input_img_base64_str = Image.open(io.BytesIO(base64.b64decode(input_image.split(",", 1)[0])))
return input_img_base64_str
def b64_img(image) -> str:
return "data:image/png;base64," + raw_b64_img(image)
def is_image_valid(input_image_path, image_str):
if not input_image_path and not image_str:
log.error("Need atleast an image path/ base 64 string of image.")
return False
if not image_str:
input_image_path = pathlib.Path(input_image_path)
image_str = raw_b64_img(input_image_path)
return image_str
return image_str