import os
import re
import shutil
import json
import html
import torch
import tqdm
from modules import shared, images, sd_models, sd_vae, sd_models_config, errors, png_parser
from modules.ui_common import plaintext_to_html
import gradio as gr
import safetensors.torch
def pnginfo_format_string(plain_text):
content = "
\n".join(html.escape(x) for x in str(plain_text).split('\n'))
return content
def pnginfo_format_setting(name, value):
cls_name = 'geninfo-setting-string' if value.startswith('"') else 'geninfo-setting-value'
return f"{html.escape(name)}: {html.escape(value)}"
def pnginfo_format_quicklink(name):
return f"[{html.escape(name)}]"
def run_pnginfo(image):
if image is None:
return '', '', ''
geninfo, items = images.read_info_from_image(image)
info = ''
parser = png_parser.PngParser(geninfo)
if parser.valid:
info += f"""
parameters
{pnginfo_format_quicklink("All")} {pnginfo_format_quicklink("Positive")}"""
if parser.negative is not None:
info += f' {pnginfo_format_quicklink("Negative")}'
info += f""" {pnginfo_format_quicklink("Settings")}
{pnginfo_format_string(parser.positive)}
""" if parser.negative is not None: info += f"""
Negative prompt:
{pnginfo_format_string(parser.negative)}
" first = True for setting in parser.settings: if first: first = False else: info += ", " info += pnginfo_format_setting(str(setting[0]), str(setting[1])+str(setting[2])) info += "
" if parser.extra is not None: info += f"{pnginfo_format_string(parser.extra)}
" info += "{plaintext_to_html(str(key))}
{plaintext_to_html(str(text))}
{message}