File size: 1,280 Bytes
424f388
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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