Open xddun opened 1 year ago
it work for me :
def roop_api(_: gr.Blocks, app: FastAPI):
@app.post("/roop/image")
async def roop_image(
source_image: str = Body("", title="source face image"),
target_image: str = Body("", title="target image"),
face_index: list[int] = Body([0], title="face index"),
scale: int = Body(1, title="scale"),
upscale_visibility: float = Body(1, title="upscale visibility"),
face_restorer: str = Body("None", title="face restorer"),
restorer_visibility: float = Body(1, title="face restorer"),
model: str = Body("inswapper_128.onnx", title="model"),
upscaler_name: str = Body("None", title="upscaler name"),
):
s_image = api.decode_base64_to_image(source_image)
t_image = api.decode_base64_to_image(target_image)
f_index = set(face_index)
upscalerx = None
if upscaler_name != "None":
for upscaler in shared.sd_upscalers:
if upscaler.name == upscaler_name:
upscalerx = upscaler
up_options = UpscaleOptions(scale=scale,
upscaler=upscalerx,
upscale_visibility=upscale_visibility,
face_restorer=get_face_restorer(face_restorer),
restorer_visibility=restorer_visibility)
use_model = get_full_model(model)
if use_model is None:
Exception("Model not found")
result = swap_face(s_image, t_image, use_model, f_index, up_options)
return {"image": api.encode_pil_to_base64(result.image())}
I hope to add this logical code
i use api,this greatly increases flexibility:
But this API cannot provide a choice of upscaler methods. How should I operate to add upscaler methods?