diff options
author | evshiron <evshiron@gmail.com> | 2022-11-02 14:37:45 +0000 |
---|---|---|
committer | evshiron <evshiron@gmail.com> | 2022-11-02 14:37:45 +0000 |
commit | e21fcd72fcf147904a1df060226c4df12acf251e (patch) | |
tree | 664a9c6007d0f894bd95662237b195616404797f /modules/api/api.py | |
parent | 172c4bc09f0866e7dd114068ebe0f9abfe79ef33 (diff) | |
download | stable-diffusion-webui-gfx803-e21fcd72fcf147904a1df060226c4df12acf251e.tar.gz stable-diffusion-webui-gfx803-e21fcd72fcf147904a1df060226c4df12acf251e.tar.bz2 stable-diffusion-webui-gfx803-e21fcd72fcf147904a1df060226c4df12acf251e.zip |
add back png info in image api
Diffstat (limited to 'modules/api/api.py')
-rw-r--r-- | modules/api/api.py | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/modules/api/api.py b/modules/api/api.py index 71c9c160..ceaf08b0 100644 --- a/modules/api/api.py +++ b/modules/api/api.py @@ -7,8 +7,9 @@ from fastapi import APIRouter, Depends, HTTPException import modules.shared as shared from modules.api.models import * from modules.processing import StableDiffusionProcessingTxt2Img, StableDiffusionProcessingImg2Img, process_images -from modules.sd_samplers import all_samplers, sample_to_image, samples_to_image_grid +from modules.sd_samplers import all_samplers from modules.extras import run_extras, run_pnginfo +from PIL import PngImagePlugin def upscaler_to_index(name: str): @@ -31,9 +32,21 @@ def setUpscalers(req: dict): def encode_pil_to_base64(image): - buffer = io.BytesIO() - image.save(buffer, format="png") - return base64.b64encode(buffer.getvalue()) + with io.BytesIO() as output_bytes: + + # Copy any text-only metadata + use_metadata = False + metadata = PngImagePlugin.PngInfo() + for key, value in image.info.items(): + if isinstance(key, str) and isinstance(value, str): + metadata.add_text(key, value) + use_metadata = True + + image.save( + output_bytes, "PNG", pnginfo=(metadata if use_metadata else None) + ) + bytes_data = output_bytes.getvalue() + return base64.b64encode(bytes_data) class Api: |