| | |
| | import os |
| | import gradio as gr |
| | from utils.editor import run_pipeline |
| | from PIL import Image |
| | import io |
| |
|
| | DESCRIPTION = """ |
| | # 👗 Fashion Editor — Stable Diffusion + ControlNet (OpenPose) |
| | Envie a foto da modelo e uma foto da peça (jaqueta, camiseta etc.). A ferramenta |
| | irá alinhar a peça, extrair a pose e usar Stable Diffusion + ControlNet para gerar |
| | a composição fotorrealista. |
| | """ |
| |
|
| | examples = [ |
| | |
| | ] |
| |
|
| | def infer(model_image, garment_image, prompt_extra): |
| | if model_image is None or garment_image is None: |
| | return None, "Envie as duas imagens (modelo e peça)." |
| |
|
| | try: |
| | result, info = run_pipeline(model_image, garment_image, prompt_extra) |
| | return result, f"OK — steps: {info.get('steps')}, guidance: {info.get('guidance_scale')}" |
| | except Exception as e: |
| | return None, f"Erro durante a geração: {str(e)}" |
| |
|
| | with gr.Blocks(title="Fashion Editor (SD + ControlNet)") as demo: |
| | gr.Markdown(DESCRIPTION) |
| | with gr.Row(): |
| | with gr.Column(): |
| | model_input = gr.Image(label="Foto da Modelo", type="pil") |
| | garment_input = gr.Image(label="Foto da Peça (Roupa)", type="pil") |
| | prompt_extra = gr.Textbox(label="Prompt extra (opcional)", lines=2) |
| | run_button = gr.Button("Gerar Edição") |
| | status = gr.Textbox(label="Status / Informações", interactive=False) |
| | with gr.Column(): |
| | output = gr.Image(label="Resultado (Final)") |
| |
|
| | run_button.click(fn=infer, inputs=[model_input, garment_input, prompt_extra], outputs=[output, status]) |
| |
|
| | if __name__ == "__main__": |
| | demo.launch() |