Spaces:
Running
Running
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( | |
"franciszzj/Leffa", | |
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, | |
) | |