Spaces:
Running
Running
File size: 2,655 Bytes
4f12a6e e740229 4f12a6e 23a2028 4f12a6e 23a2028 4f12a6e 23a2028 eb45514 23a2028 4f12a6e 23a2028 4f12a6e 23a2028 4f12a6e 23a2028 4f12a6e eb45514 4f12a6e eb45514 23a2028 4f12a6e 23a2028 1c45b4a 9e050dc 344cce7 bab6e23 e740229 a3438df e740229 bab6e23 23a2028 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
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,
)
|