Kims12 commited on
Commit
bb9ec32
ยท
verified ยท
1 Parent(s): 23c68d9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -12
app.py CHANGED
@@ -156,6 +156,28 @@ def preprocess_prompt(prompt, image1, image2, image3):
156
  prompt += " ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋ฏธ์ง€์— ํ…์ŠคํŠธ๋‚˜ ๊ธ€์ž๋ฅผ ํฌํ•จํ•˜์ง€ ๋งˆ์„ธ์š”."
157
  return prompt
158
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
159
  def generate_with_images(prompt, images, variation_index=0):
160
  # ๊ธฐ์กด ํ•จ์ˆ˜ ์œ ์ง€
161
  try:
@@ -211,17 +233,9 @@ def generate_with_images(prompt, images, variation_index=0):
211
  if not image_found:
212
  return None, f"API์—์„œ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์‘๋‹ต ํ…์ŠคํŠธ: {result_text}"
213
 
214
- # ์—ฌ๊ธฐ์„œ ์ด๋ฏธ์ง€๋ฅผ JPG๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค
215
  result_img = Image.open(temp_path)
216
- if result_img.mode == "RGBA":
217
- result_img = result_img.convert("RGB") # RGBA๋ฅผ RGB๋กœ ๋ณ€ํ™˜ (JPG๋Š” ์•ŒํŒŒ ์ฑ„๋„์„ ์ง€์›ํ•˜์ง€ ์•Š์Œ)
218
-
219
- # ์ด๋ฏธ์ง€๋ฅผ JPG๋กœ ์ €์žฅ
220
- jpg_temp = tempfile.NamedTemporaryFile(suffix=".jpg", delete=False).name
221
- result_img.save(jpg_temp, format="JPEG", quality=95)
222
-
223
- # JPG ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์‹œ ๋กœ๋“œ
224
- result_img = Image.open(jpg_temp)
225
 
226
  return result_img, f"์ด๋ฏธ์ง€๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. {result_text}"
227
  except Exception as e:
@@ -229,7 +243,7 @@ def generate_with_images(prompt, images, variation_index=0):
229
  return None, f"์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}"
230
 
231
  def process_images_with_prompt(image1, image2, image3, prompt, variation_index=0, max_retries=3):
232
- # ๊ธฐ์กด ํ•จ์ˆ˜ ์œ ์ง€
233
  retry_count = 0
234
  last_error = None
235
 
@@ -259,6 +273,8 @@ def process_images_with_prompt(image1, image2, image3, prompt, variation_index=0
259
 
260
  result_img, status = generate_with_images(final_prompt, valid_images, variation_index)
261
  if result_img is not None:
 
 
262
  return result_img, status, final_prompt
263
  else:
264
  last_error = status
@@ -274,7 +290,7 @@ def process_images_with_prompt(image1, image2, image3, prompt, variation_index=0
274
  return None, f"์ตœ๋Œ€ ์žฌ์‹œ๋„ ํšŸ์ˆ˜({max_retries}ํšŒ) ์ดˆ๊ณผ ํ›„ ์‹คํŒจ: {last_error}", prompt
275
 
276
  def generate_multiple_images(image1, image2, image3, prompt, progress=gr.Progress()):
277
- # ๊ธฐ์กด ํ•จ์ˆ˜ ์œ ์ง€
278
  results = []
279
  statuses = []
280
  prompts = []
@@ -289,6 +305,8 @@ def generate_multiple_images(image1, image2, image3, prompt, progress=gr.Progres
289
  result_img, status, final_prompt = process_images_with_prompt(image1, image2, image3, prompt, i, max_retries)
290
 
291
  if result_img is not None:
 
 
292
  results.append(result_img)
293
  statuses.append(f"์ด๋ฏธ์ง€ #{i+1}: {status}")
294
  prompts.append(f"์ด๋ฏธ์ง€ #{i+1}: {final_prompt}")
@@ -309,6 +327,7 @@ def generate_multiple_images(image1, image2, image3, prompt, progress=gr.Progres
309
 
310
  return results[0], results[1], results[2], results[3], combined_status, combined_prompts
311
 
 
312
  # GFPGAN ๊ด€๋ จ ์ฝ”๋“œ ์œ ์ง€
313
  import sys
314
  from torchvision.transforms import functional
 
156
  prompt += " ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋ฏธ์ง€์— ํ…์ŠคํŠธ๋‚˜ ๊ธ€์ž๋ฅผ ํฌํ•จํ•˜์ง€ ๋งˆ์„ธ์š”."
157
  return prompt
158
 
159
+ def convert_to_jpg(pil_image):
160
+ """์ด๋ฏธ์ง€๋ฅผ JPG ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค."""
161
+ import tempfile
162
+ from PIL import Image
163
+ import io
164
+
165
+ if pil_image is None:
166
+ return None
167
+
168
+ # RGBA ์ด๋ฏธ์ง€๋ฅผ RGB๋กœ ๋ณ€ํ™˜ (JPG๋Š” ์•ŒํŒŒ ์ฑ„๋„์„ ์ง€์›ํ•˜์ง€ ์•Š์Œ)
169
+ if pil_image.mode == "RGBA":
170
+ pil_image = pil_image.convert("RGB")
171
+
172
+ # ์ด๋ฏธ์ง€๋ฅผ JPG๋กœ ๋ณ€ํ™˜
173
+ jpg_buffer = io.BytesIO()
174
+ pil_image.save(jpg_buffer, format="JPEG", quality=95)
175
+ jpg_buffer.seek(0)
176
+
177
+ # JPG ์ด๋ฏธ์ง€ ๋‹ค์‹œ ๋กœ๋“œ
178
+ jpg_image = Image.open(jpg_buffer)
179
+ return jpg_image
180
+
181
  def generate_with_images(prompt, images, variation_index=0):
182
  # ๊ธฐ์กด ํ•จ์ˆ˜ ์œ ์ง€
183
  try:
 
233
  if not image_found:
234
  return None, f"API์—์„œ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์‘๋‹ต ํ…์ŠคํŠธ: {result_text}"
235
 
236
+ # ์ด๋ฏธ์ง€๋ฅผ JPG๋กœ ๋ณ€ํ™˜
237
  result_img = Image.open(temp_path)
238
+ result_img = convert_to_jpg(result_img)
 
 
 
 
 
 
 
 
239
 
240
  return result_img, f"์ด๋ฏธ์ง€๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. {result_text}"
241
  except Exception as e:
 
243
  return None, f"์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}"
244
 
245
  def process_images_with_prompt(image1, image2, image3, prompt, variation_index=0, max_retries=3):
246
+ # ๊ธฐ์กด ํ•จ์ˆ˜ ๋‚ด์šฉ ์œ ์ง€
247
  retry_count = 0
248
  last_error = None
249
 
 
273
 
274
  result_img, status = generate_with_images(final_prompt, valid_images, variation_index)
275
  if result_img is not None:
276
+ # ์ด๋ฏธ์ง€๋ฅผ JPG๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜
277
+ result_img = convert_to_jpg(result_img)
278
  return result_img, status, final_prompt
279
  else:
280
  last_error = status
 
290
  return None, f"์ตœ๋Œ€ ์žฌ์‹œ๋„ ํšŸ์ˆ˜({max_retries}ํšŒ) ์ดˆ๊ณผ ํ›„ ์‹คํŒจ: {last_error}", prompt
291
 
292
  def generate_multiple_images(image1, image2, image3, prompt, progress=gr.Progress()):
293
+ # ๊ฒฐ๊ณผ ์ด๋ฏธ์ง€๋“ค์ด JPG๋กœ ๋ณ€ํ™˜๋˜๋„๋ก ์ˆ˜์ •
294
  results = []
295
  statuses = []
296
  prompts = []
 
305
  result_img, status, final_prompt = process_images_with_prompt(image1, image2, image3, prompt, i, max_retries)
306
 
307
  if result_img is not None:
308
+ # ์ด๋ฏธ์ง€๋ฅผ JPG๋กœ ๋ณ€ํ™˜
309
+ result_img = convert_to_jpg(result_img)
310
  results.append(result_img)
311
  statuses.append(f"์ด๋ฏธ์ง€ #{i+1}: {status}")
312
  prompts.append(f"์ด๋ฏธ์ง€ #{i+1}: {final_prompt}")
 
327
 
328
  return results[0], results[1], results[2], results[3], combined_status, combined_prompts
329
 
330
+
331
  # GFPGAN ๊ด€๋ จ ์ฝ”๋“œ ์œ ์ง€
332
  import sys
333
  from torchvision.transforms import functional