|
from __future__ import annotations |
|
|
|
from typing import TYPE_CHECKING |
|
|
|
if TYPE_CHECKING: |
|
from PIL import Image, PngImagePlugin |
|
|
|
from sd_webui.processing import StableDiffusionProcessing |
|
|
|
def save_image( |
|
image: Image.Image, |
|
path: str, |
|
basename: str, |
|
seed: int | None = None, |
|
prompt: str = "", |
|
extension: str = "png", |
|
info: str | PngImagePlugin.iTXt = "", |
|
short_filename: bool = False, |
|
no_prompt: bool = False, |
|
grid: bool = False, |
|
pnginfo_section_name: str = "parameters", |
|
p: StableDiffusionProcessing | None = None, |
|
existing_info: dict | None = None, |
|
forced_filename: str | None = None, |
|
suffix: str = "", |
|
save_to_dirs: bool = False, |
|
) -> tuple[str, str | None]: |
|
"""Save an image. |
|
|
|
Args: |
|
image (`PIL.Image`): |
|
The image to be saved. |
|
path (`str`): |
|
The directory to save the image. Note, the option `save_to_dirs` will make the image to be saved into a sub directory. |
|
basename (`str`): |
|
The base filename which will be applied to `filename pattern`. |
|
seed, prompt, short_filename, |
|
extension (`str`): |
|
Image file extension, default is `png`. |
|
pngsectionname (`str`): |
|
Specify the name of the section which `info` will be saved in. |
|
info (`str` or `PngImagePlugin.iTXt`): |
|
PNG info chunks. |
|
existing_info (`dict`): |
|
Additional PNG info. `existing_info == {pngsectionname: info, ...}` |
|
no_prompt: |
|
TODO I don't know its meaning. |
|
p (`StableDiffusionProcessing`) |
|
forced_filename (`str`): |
|
If specified, `basename` and filename pattern will be ignored. |
|
save_to_dirs (bool): |
|
If true, the image will be saved into a subdirectory of `path`. |
|
|
|
Returns: (fullfn, txt_fullfn) |
|
fullfn (`str`): |
|
The full path of the saved imaged. |
|
txt_fullfn (`str` or None): |
|
If a text file is saved for this image, this will be its full path. Otherwise None. |
|
""" |
|
|
|
else: |
|
from modules.images import save_image |
|
|