heaversm commited on
Commit
1e53245
1 Parent(s): 9741fe6

image gen with downloading and temp file removal

Browse files
Files changed (2) hide show
  1. app.py +47 -14
  2. env-sample +1 -2
app.py CHANGED
@@ -23,11 +23,13 @@ import time
23
  # countdown stuff
24
  from datetime import datetime, timedelta
25
 
 
26
  from google.cloud import aiplatform
27
  import vertexai
28
  # from vertexai.preview.generative_models import GenerativeModel
29
  from vertexai.preview.vision_models import ImageGenerationModel
30
  from vertexai import preview
 
31
 
32
  load_dotenv()
33
 
@@ -92,10 +94,11 @@ def zip_images(image_paths_and_labels):
92
  zip_file_path = tempfile.NamedTemporaryFile(delete=False, suffix='.zip').name
93
  with zipfile.ZipFile(zip_file_path, 'w') as zipf:
94
  for image_url, _ in image_paths_and_labels:
95
- image_content = download_image(image_url)
 
96
  random_filename = ''.join(random.choices(string.ascii_letters + string.digits, k=10)) + ".png"
97
  # Write the image content to the zip file with the random filename
98
- zipf.writestr(random_filename, image_content)
99
  return zip_file_path
100
 
101
 
@@ -107,6 +110,12 @@ def download_all_images():
107
  zip_path = zip_images(image_paths_and_labels)
108
  image_paths_global = [] # Reset the global variable
109
  image_labels_global = [] # Reset the global variable
 
 
 
 
 
 
110
  return zip_path
111
 
112
  def generate_images(prompts, pw):
@@ -138,17 +147,41 @@ def generate_images(prompts, pw):
138
  prompt_w_challenge = f"{challenge}: {text}"
139
  print(prompt_w_challenge)
140
 
141
- #how to get model?
142
- model = ImageGenerationModel.from_pretrained("imagegeneration@002")
143
- response = model.generate_images(
144
- prompt=prompt_w_challenge,
145
- number_of_images=1,
146
- )
147
-
148
- print(response[0])
149
- response[0].save(f"image${i}".png)
150
-
151
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
152
 
153
  #custom css
154
  css = """
@@ -160,7 +193,7 @@ css = """
160
 
161
  with gr.Blocks(css=css) as demo:
162
 
163
- gr.Markdown("# <center>Prompt de Resistance Claude 3</center>")
164
 
165
  pw = gr.Textbox(label="Password", type="password", placeholder="Enter the password to unlock the service", value="REBEL.pier6moment")
166
 
 
23
  # countdown stuff
24
  from datetime import datetime, timedelta
25
 
26
+
27
  from google.cloud import aiplatform
28
  import vertexai
29
  # from vertexai.preview.generative_models import GenerativeModel
30
  from vertexai.preview.vision_models import ImageGenerationModel
31
  from vertexai import preview
32
+ import uuid #for generating unique filenames
33
 
34
  load_dotenv()
35
 
 
94
  zip_file_path = tempfile.NamedTemporaryFile(delete=False, suffix='.zip').name
95
  with zipfile.ZipFile(zip_file_path, 'w') as zipf:
96
  for image_url, _ in image_paths_and_labels:
97
+ # image_content = download_image(image_url)
98
+ image_content = open(image_url, "rb").read()
99
  random_filename = ''.join(random.choices(string.ascii_letters + string.digits, k=10)) + ".png"
100
  # Write the image content to the zip file with the random filename
101
+ zipf.writestr(image_url, image_content)
102
  return zip_file_path
103
 
104
 
 
110
  zip_path = zip_images(image_paths_and_labels)
111
  image_paths_global = [] # Reset the global variable
112
  image_labels_global = [] # Reset the global variable
113
+
114
+ # delete all local images
115
+ for image_path, _ in image_paths_and_labels:
116
+ os.remove(image_path)
117
+
118
+
119
  return zip_path
120
 
121
  def generate_images(prompts, pw):
 
147
  prompt_w_challenge = f"{challenge}: {text}"
148
  print(prompt_w_challenge)
149
 
150
+ start_time = time.time()
151
+
152
+ try:
153
+ #what model to use?
154
+ model = ImageGenerationModel.from_pretrained("imagegeneration@002")
155
+ response = model.generate_images(
156
+ prompt=prompt_w_challenge,
157
+ number_of_images=1,
158
+ )
159
+
160
+ end_time = time.time()
161
+ gen_time = end_time - start_time # total generation time
162
+
163
+ #generate random filename using uuid
164
+ filename = f"{uuid.uuid4()}.png"
165
+
166
+ # Save the image to a temporary file, and return this
167
+ image_url = filename
168
+ response[0].save(filename)
169
+ image_label = f"{i+1}: {text}"
170
+
171
+ try:
172
+ # Save the prompt, model, image URL, generation time and creation timestamp to the database
173
+ mongo_collection.insert_one({"user": user_initials, "text": text, "model": "imagen", "image_url": image_url, "gen_time": gen_time, "timestamp": time.time(), "challenge": challenge})
174
+ except Exception as e:
175
+ print(e)
176
+ raise gr.Error("An error occurred while saving the prompt to the database.")
177
+
178
+ # Append the image URL and label to their respective lists
179
+ image_paths.append(image_url)
180
+ image_labels.append(image_label)
181
+ except Exception as e:
182
+ print(e)
183
+ raise gr.Error(f"An error occurred while generating the image for: {entry}")
184
+ return image_paths, image_labels
185
 
186
  #custom css
187
  css = """
 
193
 
194
  with gr.Blocks(css=css) as demo:
195
 
196
+ gr.Markdown("# <center>Prompt de Resistance Vertex Imagen</center>")
197
 
198
  pw = gr.Textbox(label="Password", type="password", placeholder="Enter the password to unlock the service", value="REBEL.pier6moment")
199
 
env-sample CHANGED
@@ -1,5 +1,4 @@
1
  OPENAI_API_KEY = <YOUR_OPENAI_API_KEY>
2
  PW = <YOUR_PW>
3
  MONGO_URI=<YOUR_MONGO_URI>
4
- MODE=dev
5
- ANTHROPIC_API_KEY=<YOUR_ANTHROPIC_API_KEY>
 
1
  OPENAI_API_KEY = <YOUR_OPENAI_API_KEY>
2
  PW = <YOUR_PW>
3
  MONGO_URI=<YOUR_MONGO_URI>
4
+ MODE=dev