import gradio as gr import requests from PIL import Image import io def tryon_interface(human_image, garm_image, garment_des, is_checked, is_checked_crop, denoise_steps, seed): human_img_bytes = io.BytesIO() human_image.save(human_img_bytes, format='PNG') human_img_bytes.seek(0) garm_img_bytes = io.BytesIO() garm_image.save(garm_img_bytes, format='PNG') garm_img_bytes.seek(0) files = { 'human_image': ('human_image.png', human_img_bytes, 'image/png'), 'garm_image': ('garm_image.png', garm_img_bytes, 'image/png') } data = { 'garment_des': garment_des, 'is_checked': is_checked, 'is_checked_crop': is_checked_crop, 'denoise_steps': denoise_steps, 'seed': seed } response = requests.post("https://meta-virtualtryon.onrender.com/tryon", files=files, data=data) result = response.json() result_image_url = result["result_image"] mask_image_url = result["mask_image"] result_image = Image.open(requests.get(result_image_url, stream=True).raw) mask_image = Image.open(requests.get(mask_image_url, stream=True).raw) return result_image, mask_image iface = gr.Interface( fn=tryon_interface, inputs=[ gr.Image(type="pil", label="Human Image"), gr.Image(type="pil", label="Garment Image"), gr.Textbox(placeholder="Description of garment", label="Garment Description"), gr.Checkbox(label="Use auto-generated mask"), gr.Checkbox(label="Use auto-crop & resizing"), gr.Number(label="Denoising Steps", default=30), gr.Number(label="Seed", default=42) ], outputs=[ gr.Image(label="Synthesized Image"), gr.Image(label="Mask Image") ], title="Virtual Try-On" ) iface.launch()