Spaces:
Runtime error
Runtime error
| import os | |
| import io | |
| # Workaround for PIL/Gradio bug :contentReference[oaicite:13]{index=13} | |
| import PIL.Image | |
| import gradio as gr | |
| from gradio_client import Client, handle_file | |
| from gradio_client.client import re | |
| from numpy import array | |
| # 1. Load your HF token from env | |
| HF_TOKEN = os.getenv("HF_TOKEN") # export HF_TOKEN="hf_..." | |
| # 1) Connect to the Leffa Gradio app’s predict endpoint | |
| # Use the full "/call/predict" API path as shown on the View API page | |
| client = Client( | |
| "GenieLamp/VTON", | |
| hf_token=HF_TOKEN, | |
| ) # Gradio Python client | |
| def virtual_tryon( | |
| person_path, | |
| garment_path, | |
| garment_type, | |
| ): | |
| # 2) Wrap file inputs so Gradio client uploads them correctly | |
| person_file = handle_file( | |
| person_path | |
| ) # handle_file uploads the image :contentReference[oaicite:6]{index=6} | |
| garment_file = handle_file(garment_path) | |
| # 3) Build inputs in the exact order shown on the “Use via API” page :contentReference[oaicite:7]{index=7} | |
| # 4) Call the named endpoint with handle_file inputs | |
| result = client.predict( | |
| person_file, # Person Image | |
| garment_file, # Garment Image | |
| ref_acceleration=False, | |
| step=30, | |
| scale=2.5, | |
| seed=42, | |
| vt_model_type="viton_hd", | |
| vt_garment_type=garment_type, | |
| vt_repaint=False, | |
| api_name="/leffa_predict_vt",) | |
| # result[0] is the generated image filepath on the server | |
| return result[0] # Gradio will download & display this file | |
| # 5) Gradio UI | |
| with gr.Blocks(theme=gr.themes.Soft()) as demo: | |
| gr.Markdown("## V_TRY DEMO") | |
| with gr.Row(): | |
| with gr.Column(): | |
| gr.Markdown("####UPLOAD PERSON IMAGE") | |
| src = gr.Image(sources="upload", type="filepath", | |
| label="Person Image") | |
| with gr.Column(): | |
| gr.Markdown("####UPLOAD GARMENT IMAGE") | |
| ref = gr.Image(sources="upload", type="filepath", | |
| label="Garment Image") | |
| with gr.Column(): | |
| gr.Markdown("####Select the Garment type") | |
| garment_type = gr.Radio( | |
| choices=[("Upper", "upper_body"), | |
| ("Lower", "lower_body"), ("Dress", "dresses")], | |
| value="upper_body", | |
| label="Garment Type", | |
| ) | |
| with gr.Column(): | |
| gr.Markdown("####Output Image") | |
| out = gr.Image(type="filepath", label="Result",) | |
| with gr.Row(): | |
| btn = gr.Button("Generate") | |
| btn.click(virtual_tryon, [src, ref, garment_type], out) | |
| demo.launch( | |
| share=True, | |
| show_error=True, | |
| pwa=True, | |
| ) | |