Spaces:
Runtime error
Runtime error
image gen with downloading and temp file removal
Browse files- app.py +47 -14
- 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(
|
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 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
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
|
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
|
|