Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from gen_tab import create_gen_tab | |
| from train_tab import create_train_tab | |
| from virtualtryon_tab import create_virtualtryon_tab | |
| from faceswap_tab import create_faceswap_tab | |
| from ipadapter_tab import create_ipadaptor_tab | |
| from relighting_tab import gen_relighting_tab | |
| from controlnetmockup_tab import create_cnmu_tab | |
| #from mail_tab import create_mail_tab | |
| from PIL import Image | |
| from pattern_ip_adapter import sam_zest_tab | |
| from dotenv import load_dotenv, find_dotenv | |
| import os | |
| from src.utils import convert_to_pil | |
| from datetime import datetime | |
| gallery_list=[] | |
| # Ensure the base folder for storing images exists | |
| base_dir = "gallery_images" | |
| os.makedirs(base_dir, exist_ok=True) | |
| # Function to convert and save the image to a dated folder, and update the gallery | |
| def update_gallery_local(img): | |
| if img is None: | |
| return gallery_list | |
| print(type(img), len(gallery_list)) | |
| try: | |
| # Convert the image to PIL if needed | |
| img = convert_to_pil(img) | |
| except: | |
| print("Error with converting to PIL") | |
| print(type(img),img) | |
| return gallery_list | |
| # Get the current date and create a folder for it | |
| current_date = datetime.now().strftime("%Y-%m-%d") | |
| date_folder = os.path.join(base_dir, current_date) | |
| os.makedirs(date_folder, exist_ok=True) | |
| # Generate a unique filename for the image | |
| img_filename = f"generated_image_{len(gallery_list)}.png" | |
| img_path = os.path.join(date_folder, img_filename) | |
| # Save the image to the date folder | |
| img.save(img_path) | |
| # Add the file path to the gallery list | |
| gallery_list.append(img_path) | |
| # Return the updated gallery list with image paths | |
| return gallery_list | |
| def update_gallery(img): | |
| try: | |
| print(type(img),print(len(gallery_list))) | |
| img=convert_to_pil(img) | |
| gallery_list.append(img) | |
| except: | |
| print("Error with saving image to gallery") | |
| #img=Image.open(img) | |
| #gallery_list.append(img) | |
| return gallery_list | |
| theme= gr.themes.Soft( | |
| primary_hue=gr.themes.colors.emerald, | |
| secondary_hue=gr.themes.colors.green) | |
| css = """ | |
| .gradio-container img { | |
| display: block; | |
| width: 100%; | |
| height: auto; | |
| object-fit: cover; | |
| border-radius: 10px; | |
| } | |
| .gradio-container p { | |
| margin: 0; | |
| font-size: 16px; | |
| font-weight: bold; | |
| } | |
| .gen-btn { | |
| background-color: green; | |
| color: white; | |
| } | |
| .gradio-container .gr-button { | |
| width: 100%; | |
| background-color: green; | |
| border: 1px solid #ddd; | |
| padding: 10px; | |
| border-radius: 10px; | |
| } | |
| .output_image { | |
| display: block; | |
| margin-left: auto; | |
| margin-right: auto; | |
| width: 100%; | |
| height: auto; | |
| } | |
| .gradio-container .gr-button:hover { | |
| background-color: #f0f0f0; | |
| } | |
| """ | |
| _ = load_dotenv(find_dotenv()) | |
| with gr.Blocks(theme=theme,css=css) as demo: | |
| with gr.Tabs() as tabs: | |
| gen_out,move_to_vto,move_to_ip,move_to_cnmk,move_to_relight = create_gen_tab() | |
| #input_ip,output_ip,move_to_cnmk_fm_ip,move_to_relight_fm_ip=create_ipadaptor_tab() | |
| input_vto,output_vto,move_to_cnmk_fm_try,move_to_relight_fm_try=create_virtualtryon_tab() | |
| #input_zest,output_zest=sam_zest_tab() | |
| #input_fs,output_fs=create_faceswap_tab() | |
| input_cnmu,output_cnmu,move_to_relight_fm_try=create_cnmu_tab() | |
| input_rl,output_rl=gen_relighting_tab() | |
| #create_tinput_iprain_tab() | |
| #Move to Buttons | |
| move_to_vto.click(lambda x:x, inputs=gen_out,outputs=input_vto) | |
| move_to_cnmk.click(lambda x:x,inputs=gen_out,outputs=input_cnmu) | |
| #move_to_fs.click(lambda x:x, inputs=gen_out,outputs=input_fs) | |
| #move_to_ip.click(lambda x:x, inputs=gen_out,outputs=input_ip) | |
| move_to_relight.click(lambda x:x, inputs=gen_out,outputs=input_rl) | |
| #Move to Buttons from Ip Adapter | |
| #move_to_cnmk_fm_ip.click(lambda x:x,inputs=output_ip,outputs=input_cnmu) | |
| #move_to_relight_fm_ip.click(lambda x:x,inputs=output_ip,outputs=input_rl) | |
| #Move to Buttons from Virtual Try On | |
| move_to_cnmk_fm_try.click(lambda x:x,inputs=output_vto,outputs=input_cnmu) | |
| move_to_relight_fm_try.click(lambda x:x,inputs=output_vto,outputs=input_rl) | |
| #Move to Button From Control Net Mockup | |
| move_to_relight_fm_try.click(lambda x:x,inputs=output_cnmu,outputs=input_rl) | |
| #Gallery | |
| image_gallery = gr.Gallery(label="Generated Images Gallery",type="path",elem_id="output_image") | |
| #Gallery updates get all outputs | |
| gen_out.change(update_gallery_local,inputs=gen_out,outputs=image_gallery) | |
| output_vto.change(update_gallery_local,inputs=output_vto,outputs=image_gallery) | |
| #output_fs.change(update_gallery,inputs=output_fs,outputs=image_gallery) | |
| #output_ip.change(update_gallery_local,inputs=output_ip,outputs=image_gallery) | |
| output_cnmu.change(update_gallery_local,inputs=output_cnmu,outputs=image_gallery) | |
| output_rl.change(update_gallery_local,inputs=output_rl,outputs=image_gallery) | |
| #output_zest.change(update_gallery,inputs=output_zest,outputs=image_gallery) | |
| demo.launch(share=True,show_error=True,debug=True) #,auth=[("username", "password"),(os.getenv("APP_USER"),os.getenv("APP_PW"))]) | |