赞
踩
- python webui.py --port 7860 --nowebui --listen
-
- 在http://127.0.0.1:7860/docs中可以看到
- python webui.py --port 7860 --nowebui --listen
-
- api_only()->initialize()->
- app = Fastapi()->setup_middleware(app)->api=Api(app,queue_lock)->
- modules.script_callbacks.app_started_callback(None,app)
- api.launch()
modules/api/api.py
- self.router = APIRouter()
- api_middleware(self.app)
- self.add_api_route("/sdapi/v1/txt2img", self.text2imgapi, methods=["POST"], response_model=models.TextToImageResponse)
-
- text2imgapi()->
- script_runner = scripts.scripts_txt2img
- if not script_runner.scripts:
- script_runner.initialize_scripts(False)
- ui.create_ui()
- if not self.default_script_arg_txt2img:
- self.default_script_arg_txt2img = self.init_default_script_args(script_runner)
- selectable_scripts, selectable_script_idx = self.get_selectable_script(txt2imgreq.script_name, script_runner)
-
- populate = txt2imgreq.copy(update={ # Override __init__ params
- "sampler_name": validate_sampler_name(txt2imgreq.sampler_name or txt2imgreq.sampler_index),
- "do_not_save_samples": not txt2imgreq.save_images,
- "do_not_save_grid": not txt2imgreq.save_images,
- })
- if populate.sampler_name:
- populate.sampler_index = None # prevent a warning later on
-
- args = vars(populate)
- args.pop('script_name', None)
- args.pop('script_args', None) # will refeed them to the pipeline directly after initializing them
- args.pop('alwayson_scripts', None)
-
- script_args = self.init_script_args(txt2imgreq, self.default_script_arg_txt2img, selectable_scripts,
- selectable_script_idx, script_runner)
-
- send_images = args.pop('send_images', True)
- args.pop('save_images', None)
-
- with self.queue_lock:
- p = StableDiffusionProcessingTxt2Img(sd_model=shared.sd_model, **args)
- p.scripts = script_runner
- p.outpath_grids = opts.outdir_txt2img_grids
- p.outpath_samples = opts.outdir_txt2img_samples
-
- shared.state.begin()
- if selectable_scripts is not None:
- p.script_args = script_args
- processed = scripts.scripts_txt2img.run(p, *p.script_args) # Need to pass args as list here
- else:
- p.script_args = tuple(script_args) # Need to pass args as tuple here
- processed = process_images(p)
- shared.state.end()
-
- b64images = list(map(encode_pil_to_base64, processed.images)) if send_images else []
-
- return models.TextToImageResponse(images=b64images, parameters=vars(txt2imgreq), info=processed.js())
/modules/api/models.py
- StableDiffusionTxt2ImgProcessingAPI = PydanticModelGenerator(
- "StableDiffusionProcessingTxt2Img",
- StableDiffusionProcessingTxt2Img,
- [
- {"key": "sampler_index", "type": str, "default": "Euler"},
- {"key": "script_name", "type": str, "default": None},
- {"key": "script_args", "type": list, "default": []},
- {"key": "send_images", "type": bool, "default": True},
- {"key": "save_images", "type": bool, "default": False},
- {"key": "alwayson_scripts", "type": dict, "default": {}},
- ]
- ).generate_model()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。