sogok commited on
Commit
492c4a1
·
verified ·
1 Parent(s): 667b2e4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -44
app.py CHANGED
@@ -5,7 +5,7 @@ from random import randint
5
  from all_models import models
6
  from io import BytesIO
7
  from PIL import Image
8
- from fastapi import FastAPI, Request, Response
9
  from deep_translator import GoogleTranslator
10
  import tempfile
11
  import uuid
@@ -37,17 +37,6 @@ def convert_to_png(image):
37
  png_buffer.seek(0)
38
  return Image.open(png_buffer)
39
 
40
- # Dictionary to store temporary files in memory
41
- temp_images = {}
42
-
43
- @app.get("/temp_images/{image_id}.png")
44
- async def get_temp_image(image_id: str):
45
- """Endpoint to serve temporary images directly"""
46
- if image_id in temp_images:
47
- image_bytes = temp_images[image_id]
48
- return Response(content=image_bytes, media_type="image/png")
49
- return Response(status_code=404)
50
-
51
  def gen_image(model_str, prompt):
52
  if model_str == 'NA':
53
  return None, None
@@ -69,18 +58,15 @@ def gen_image(model_str, prompt):
69
  elif not isinstance(generated_image, Image.Image):
70
  generated_image = Image.fromarray(generated_image)
71
 
72
- # Convert to PNG and store in memory
73
- png_buffer = BytesIO()
74
- generated_image.save(png_buffer, format="PNG")
75
- png_bytes = png_buffer.getvalue()
76
 
77
- # Generate unique ID for the image
78
- image_id = str(uuid.uuid4())
79
- temp_images[image_id] = png_bytes
80
 
81
- # Return direct URL without proxy
82
- image_url = f"/temp_images/{image_id}.png"
83
- return image_url, seed
84
 
85
  # Gradio Interface
86
  def make_me():
@@ -100,41 +86,37 @@ def make_me():
100
  elem_id="custom_stop_button")
101
 
102
  def on_generate_click():
103
- return gr.Button('Generating...', interactive=False, elem_id="custom_gen_button"), gr.Button('Stop', variant='secondary', interactive=True, elem_id="custom_stop_button")
104
 
105
  def on_stop_click():
106
- return gr.Button('Generate', variant='primary', elem_id="custom_gen_button"), gr.Button('Stop', variant='secondary', interactive=False, elem_id="custom_stop_button")
107
 
108
- gen_button.click(on_generate_click, inputs=None, outputs=[gen_button, stop_button])
109
- stop_button.click(on_stop_click, inputs=None, outputs=[gen_button, stop_button])
110
 
111
  model_dropdown = gr.Dropdown(
112
  models,
113
  label="Select Model",
114
- value=models[0] if models else None,
115
- interactive=True
116
  )
117
 
118
  with gr.Column(scale=2):
119
- with gr.Row():
120
- output_gallery = gr.Gallery(
121
- label="Generated PNG Images",
122
- columns=2,
123
- height="auto",
124
- elem_id="gallery"
125
- )
126
  seed_output = gr.Textbox(
127
  label="Seed used",
128
  interactive=False
129
  )
130
 
131
  def generate_wrapper(model_str, prompt):
132
- image_url, seed = gen_image(model_str, prompt)
133
- if image_url is None:
134
  return None, ""
135
-
136
- # Return the direct image URL
137
- return [image_url], str(seed)
138
 
139
  gen_event = gen_button.click(
140
  generate_wrapper,
@@ -142,10 +124,9 @@ def make_me():
142
  [output_gallery, seed_output]
143
  )
144
  stop_button.click(
145
- fn=lambda: [gr.Button('Generate', variant='primary', interactive=True),
146
- gr.Button('Stop', variant='secondary', interactive=False)],
147
- inputs=None,
148
- outputs=[gen_button, stop_button],
149
  cancels=[gen_event]
150
  )
151
 
 
5
  from all_models import models
6
  from io import BytesIO
7
  from PIL import Image
8
+ from fastapi import FastAPI, Request
9
  from deep_translator import GoogleTranslator
10
  import tempfile
11
  import uuid
 
37
  png_buffer.seek(0)
38
  return Image.open(png_buffer)
39
 
 
 
 
 
 
 
 
 
 
 
 
40
  def gen_image(model_str, prompt):
41
  if model_str == 'NA':
42
  return None, None
 
58
  elif not isinstance(generated_image, Image.Image):
59
  generated_image = Image.fromarray(generated_image)
60
 
61
+ # Create temp directory
62
+ temp_dir = os.path.join(tempfile.gettempdir(), "gradio_images")
63
+ os.makedirs(temp_dir, exist_ok=True)
 
64
 
65
+ # Save to temporary file
66
+ temp_path = os.path.join(temp_dir, f"{uuid.uuid4()}.png")
67
+ generated_image.save(temp_path, format="PNG")
68
 
69
+ return temp_path, seed
 
 
70
 
71
  # Gradio Interface
72
  def make_me():
 
86
  elem_id="custom_stop_button")
87
 
88
  def on_generate_click():
89
+ return gr.Button('Generating...', interactive=False), gr.Button('Stop', interactive=True)
90
 
91
  def on_stop_click():
92
+ return gr.Button('Generate', interactive=True), gr.Button('Stop', interactive=False)
93
 
94
+ gen_button.click(on_generate_click, None, [gen_button, stop_button])
95
+ stop_button.click(on_stop_click, None, [gen_button, stop_button])
96
 
97
  model_dropdown = gr.Dropdown(
98
  models,
99
  label="Select Model",
100
+ value=models[0] if models else None
 
101
  )
102
 
103
  with gr.Column(scale=2):
104
+ output_gallery = gr.Gallery(
105
+ label="Generated PNG Images",
106
+ columns=2,
107
+ height="auto",
108
+ elem_id="gallery"
109
+ )
 
110
  seed_output = gr.Textbox(
111
  label="Seed used",
112
  interactive=False
113
  )
114
 
115
  def generate_wrapper(model_str, prompt):
116
+ image_path, seed = gen_image(model_str, prompt)
117
+ if image_path is None:
118
  return None, ""
119
+ return [image_path], str(seed)
 
 
120
 
121
  gen_event = gen_button.click(
122
  generate_wrapper,
 
124
  [output_gallery, seed_output]
125
  )
126
  stop_button.click(
127
+ on_stop_click,
128
+ None,
129
+ [gen_button, stop_button],
 
130
  cancels=[gen_event]
131
  )
132