mirror of
https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
synced 2025-02-23 22:55:07 +08:00
make it possible again to serve saved pictures without writing them to a temporary directory
This commit is contained in:
parent
d51619e53b
commit
cc6f27614b
@ -60,9 +60,57 @@ def save_pil_to_file(pil_image, cache_dir=None, format="png"):
|
||||
return file_obj.name
|
||||
|
||||
|
||||
def move_files_to_cache(data, block, postprocess=False):
|
||||
"""Move files to cache and replace the file path with the cache path.
|
||||
|
||||
Runs after postprocess and before preprocess.
|
||||
|
||||
Copied from gradio's processing_utils.py
|
||||
|
||||
Args:
|
||||
data: The input or output data for a component. Can be a dictionary or a dataclass
|
||||
block: The component
|
||||
postprocess: Whether its running from postprocessing
|
||||
"""
|
||||
|
||||
from gradio import FileData
|
||||
from gradio.processing_utils import move_resource_to_block_cache
|
||||
from gradio.data_classes import GradioRootModel
|
||||
from gradio.data_classes import GradioModel
|
||||
from gradio_client import utils as client_utils
|
||||
|
||||
def _move_to_cache(d: dict):
|
||||
payload = FileData(**d)
|
||||
# If the gradio app developer is returning a URL from
|
||||
# postprocess, it means the component can display a URL
|
||||
# without it being served from the gradio server
|
||||
# This makes it so that the URL is not downloaded and speeds up event processing
|
||||
if payload.url and postprocess:
|
||||
temp_file_path = payload.url
|
||||
else:
|
||||
|
||||
if check_tmp_file(shared.demo, payload.path):
|
||||
temp_file_path = payload.path
|
||||
else:
|
||||
temp_file_path = move_resource_to_block_cache(payload.path, block)
|
||||
assert temp_file_path is not None
|
||||
payload.path = temp_file_path
|
||||
return payload.model_dump()
|
||||
|
||||
if isinstance(data, (GradioRootModel, GradioModel)):
|
||||
data = data.model_dump()
|
||||
|
||||
return client_utils.traverse(data, _move_to_cache, client_utils.is_file_obj)
|
||||
|
||||
|
||||
def install_ui_tempdir_override():
|
||||
"""override save to file function so that it also writes PNG info"""
|
||||
"""
|
||||
override save to file function so that it also writes PNG info.
|
||||
override gradio4's move_files_to_cache function to prevent it from writing a copy into a temporary directory.
|
||||
"""
|
||||
|
||||
gradio.processing_utils.save_pil_to_cache = save_pil_to_file
|
||||
gradio.processing_utils.move_files_to_cache = move_files_to_cache
|
||||
|
||||
|
||||
def on_tmpdir_changed():
|
||||
|
Loading…
Reference in New Issue
Block a user