File size: 5,311 Bytes
5c45309
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
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"))])