import os import args_manager import modules.config import json import urllib.parse from PIL import Image from PIL.PngImagePlugin import PngInfo from modules.util import generate_temp_filename from modules.metadata import MetadataScheme log_cache = {} def get_current_html_path(): date_string, local_temp_filename, only_name = generate_temp_filename(folder=modules.config.path_outputs, extension='png') html_name = os.path.join(os.path.dirname(local_temp_filename), 'log.html') return html_name def log(img, metadata, save_metadata_to_image=False, metadata_scheme: MetadataScheme = MetadataScheme.FOOOCUS): if args_manager.args.disable_image_log: return date_string, local_temp_filename, only_name = generate_temp_filename(folder=modules.config.path_outputs, extension='png') os.makedirs(os.path.dirname(local_temp_filename), exist_ok=True) if save_metadata_to_image: metadata_parser = modules.metadata.get_metadata_parser(metadata_scheme) parsed_parameters = metadata_parser.parse_string(metadata) pnginfo = PngInfo() pnginfo.add_text('parameters', parsed_parameters) pnginfo.add_text('fooocus_scheme', metadata_scheme.value) else: pnginfo = None Image.fromarray(img).save(local_temp_filename, pnginfo=pnginfo) html_name = os.path.join(os.path.dirname(local_temp_filename), 'log.html') css_styles = ( "" ) js = ( """""" ) begin_part = f"
Fooocus Log {date_string} (private)
\nAll images are clean, without any hidden data/meta, and safe to share with others.
\n\n" end_part = f'\n' middle_part = log_cache.get(html_name, "") if middle_part == "": if os.path.exists(html_name): existing_split = open(html_name, 'r', encoding='utf-8').read().split('') if len(existing_split) == 3: middle_part = existing_split[1] else: middle_part = existing_split[0] div_name = only_name.replace('.', '_') item = f"