Commit e709afb0 authored by timntorres's avatar timntorres
Browse files

Merge commit 'e7254746' into 3825-save-hypernet-strength-to-info

parents 2c4d2038 e7254746
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
*       @AUTOMATIC1111
/localizations/ar_AR.json   @xmodar @blackneoo
/localizations/de_DE.json   @LunixWasTaken
/localizations/es_ES.json   @innovaciones
/localizations/fr_FR.json   @tumbly
/localizations/it_IT.json   @EugenioBuffo
/localizations/ja_JP.json   @yuuki76
/localizations/ko_KR.json   @36DB
/localizations/pt_BR.json   @M-art-ucci
/localizations/ru_RU.json   @kabachuha
/localizations/tr_TR.json   @camenduru
/localizations/zh_CN.json   @dtlnor @bgluminous
/localizations/zh_TW.json   @benlisquare
+0 −0

File moved.

+9 −3
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@ import modules.shared as shared
from modules.api.models import *
from modules.processing import StableDiffusionProcessingTxt2Img, StableDiffusionProcessingImg2Img, process_images
from modules.sd_samplers import all_samplers
from modules.extras import run_extras
from modules.extras import run_extras, run_pnginfo

def upscaler_to_index(name: str):
    try:
@@ -32,6 +32,7 @@ class Api:
        self.app.add_api_route("/sdapi/v1/img2img", self.img2imgapi, methods=["POST"], response_model=ImageToImageResponse)
        self.app.add_api_route("/sdapi/v1/extra-single-image", self.extras_single_image_api, methods=["POST"], response_model=ExtrasSingleImageResponse)
        self.app.add_api_route("/sdapi/v1/extra-batch-images", self.extras_batch_images_api, methods=["POST"], response_model=ExtrasBatchImagesResponse)
        self.app.add_api_route("/sdapi/v1/png-info", self.pnginfoapi, methods=["POST"], response_model=PNGInfoResponse)

    def text2imgapi(self, txt2imgreq: StableDiffusionTxt2ImgProcessingAPI):
        sampler_index = sampler_to_index(txt2imgreq.sampler_index)
@@ -125,8 +126,13 @@ class Api:

        return ExtrasBatchImagesResponse(images=list(map(encode_pil_to_base64, result[0])), html_info=result[1])
    
    def pnginfoapi(self):
        raise NotImplementedError
    def pnginfoapi(self, req: PNGInfoRequest):
        if(not req.image.strip()):
            return PNGInfoResponse(info="")

        result = run_pnginfo(decode_base64_to_image(req.image.strip()))

        return PNGInfoResponse(info=result[1])

    def launch(self, server_name, port):
        self.app.include_router(self.router)
+8 −1
Original line number Diff line number Diff line
import inspect
from click import prompt
from pydantic import BaseModel, Field, create_model
from typing import Any, Optional
from typing_extensions import Literal
@@ -149,3 +150,9 @@ class ExtrasBatchImagesRequest(ExtrasBaseRequest):

class ExtrasBatchImagesResponse(ExtraBaseResponse):
    images: list[str] = Field(title="Images", description="The generated images in base64 format.")

class PNGInfoRequest(BaseModel):
    image: str = Field(title="Image", description="The base64 encoded PNG image")

class PNGInfoResponse(BaseModel):
    info: str = Field(title="Image info", description="A string with all the info the image had")
 No newline at end of file
+26 −10
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ import gradio as gr
from modules.shared import script_path
from modules import shared
import tempfile
from PIL import Image, PngImagePlugin
from PIL import Image

re_param_code = r'\s*([\w ]+):\s*("(?:\\|\"|[^\"])+"|[^,]*)(?:,|$)'
re_param = re.compile(re_param_code)
@@ -61,6 +61,24 @@ def add_paste_fields(tabname, init_img, fields):
        modules.ui.img2img_paste_fields = fields


def integrate_settings_paste_fields(component_dict):
    from modules import ui

    settings_map = {
        'sd_hypernetwork': 'Hypernet',
        'CLIP_stop_at_last_layers': 'Clip skip',
        'sd_model_checkpoint': 'Model hash',
    }
    settings_paste_fields = [
        (component_dict[k], lambda d, k=k, v=v: ui.apply_setting(k, d.get(v, None)))
        for k, v in settings_map.items()
    ]

    for tabname, info in paste_fields.items():
        if info["fields"] is not None:
            info["fields"] += settings_paste_fields


def create_buttons(tabs_list):
    buttons = {}
    for tab in tabs_list:
@@ -93,18 +111,16 @@ def run_bind():
                    )

            if send_generate_info and paste_fields[tab]["fields"] is not None:
                paste_field_names = ['Prompt', 'Negative prompt', 'Steps', 'Face restoration', 'Size-1', 'Size-2']
                if shared.opts.send_seed:
                    paste_field_names += ["Seed"]
                if send_generate_info in paste_fields:
                    paste_field_names = ['Prompt', 'Negative prompt', 'Steps', 'Face restoration', 'Size-1', 'Size-2'] + (["Seed"] if shared.opts.send_seed else [])

                    button.click(
                        fn=lambda *x: x,
                        inputs=[field for field, name in paste_fields[send_generate_info]["fields"] if name in paste_field_names],
                        outputs=[field for field, name in paste_fields[tab]["fields"] if name in paste_field_names],
                    )

                else:
                    connect_paste(button, [(field, name) for field, name in paste_fields[tab]["fields"]  if name in paste_field_names], send_generate_info)
                    connect_paste(button, paste_fields[tab]["fields"], send_generate_info)

            button.click(
                fn=None,
Loading