aboutsummaryrefslogtreecommitdiffstats
path: root/modules/ui.py
diff options
context:
space:
mode:
authorAUTOMATIC <16777216c@gmail.com>2022-10-15 10:11:28 +0000
committerAUTOMATIC <16777216c@gmail.com>2022-10-15 10:11:28 +0000
commit5967d07d1aa4e2fef031a57b1612b1ab04a3cd78 (patch)
tree84cfc2f8a93ada0e05736c74365d6a43be55b190 /modules/ui.py
parent3631adfe96dd7746f7e23a3cf5802d8f4a95a532 (diff)
downloadstable-diffusion-webui-gfx803-5967d07d1aa4e2fef031a57b1612b1ab04a3cd78.tar.gz
stable-diffusion-webui-gfx803-5967d07d1aa4e2fef031a57b1612b1ab04a3cd78.tar.bz2
stable-diffusion-webui-gfx803-5967d07d1aa4e2fef031a57b1612b1ab04a3cd78.zip
fix new gradio failing to preserve image params
Diffstat (limited to 'modules/ui.py')
-rw-r--r--modules/ui.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/modules/ui.py b/modules/ui.py
index 9c7a67dd..de5ab929 100644
--- a/modules/ui.py
+++ b/modules/ui.py
@@ -7,6 +7,7 @@ import mimetypes
import os
import random
import sys
+import tempfile
import time
import traceback
import platform
@@ -176,6 +177,23 @@ def save_files(js_data, images, do_make_zip, index):
return gr.File.update(value=fullfns, visible=True), '', '', plaintext_to_html(f"Saved: {filenames[0]}")
+def save_pil_to_file(pil_image, dir=None):
+ use_metadata = False
+ metadata = PngImagePlugin.PngInfo()
+ for key, value in pil_image.info.items():
+ if isinstance(key, str) and isinstance(value, str):
+ metadata.add_text(key, value)
+ use_metadata = True
+
+ file_obj = tempfile.NamedTemporaryFile(delete=False, suffix=".png", dir=dir)
+ pil_image.save(file_obj, pnginfo=(metadata if use_metadata else None))
+ return file_obj
+
+
+# override save to file function so that it also writes PNG info
+gr.processing_utils.save_pil_to_file = save_pil_to_file
+
+
def wrap_gradio_call(func, extra_outputs=None):
def f(*args, extra_outputs_array=extra_outputs, **kwargs):
run_memmon = opts.memmon_poll_rate > 0 and not shared.mem_mon.disabled