Update app.py
Browse files
app.py
CHANGED
@@ -9,8 +9,9 @@ import base64
|
|
9 |
import mimetypes
|
10 |
import logging
|
11 |
|
12 |
-
from google import genai
|
13 |
-
|
|
|
14 |
|
15 |
# .env νμΌμ μ μ₯λ νκ²½λ³μ λ‘λ (python-dotenv μ€μΉ νμ: pip install python-dotenv)
|
16 |
from dotenv import load_dotenv
|
@@ -21,17 +22,14 @@ logging.basicConfig(level=logging.DEBUG,
|
|
21 |
format='%(asctime)s - %(levelname)s - %(message)s')
|
22 |
logger = logging.getLogger(__name__)
|
23 |
|
24 |
-
|
25 |
def save_binary_file(file_name, data):
|
26 |
logger.debug(f"νμΌμ μ΄μ§ λ°μ΄ν° μ μ₯ μ€: {file_name}")
|
27 |
with open(file_name, "wb") as f:
|
28 |
f.write(data)
|
29 |
logger.debug(f"νμΌ μ μ₯ μλ£: {file_name}")
|
30 |
|
31 |
-
|
32 |
def generate(text, file_name, background_file=None, style_file=None, model="gemini-2.0-flash-exp-image-generation"):
|
33 |
logger.debug(f"generate ν¨μ μμ - ν
μ€νΈ: '{text}', νμΌλͺ
: '{file_name}', λͺ¨λΈ: '{model}'")
|
34 |
-
|
35 |
try:
|
36 |
# API ν€λ νκ²½λ³μμμ λΆλ¬μ΄
|
37 |
effective_api_key = os.environ.get("GEMINI_API_KEY")
|
@@ -77,7 +75,6 @@ def generate(text, file_name, background_file=None, style_file=None, model="gemi
|
|
77 |
)
|
78 |
# μ€νμΌ μ΄λ―Έμ§ ννΈ (μ‘΄μ¬ μ)
|
79 |
if style_file is not None:
|
80 |
-
# λ°°κ²½μ΄ μλ κ²½μ° uploaded_files[1]κ° μ€νμΌ μ΄λ―Έμ§κ° λ¨μ μ£Όμ
|
81 |
style_index = 2 if background_file is not None else 1
|
82 |
parts.append(
|
83 |
types.Part.from_uri(
|
@@ -141,8 +138,7 @@ def generate(text, file_name, background_file=None, style_file=None, model="gemi
|
|
141 |
|
142 |
except Exception as e:
|
143 |
logger.exception("μ΄λ―Έμ§ μμ± μ€ μ€λ₯ λ°μ:")
|
144 |
-
return None
|
145 |
-
|
146 |
|
147 |
def process_image_and_prompt(original_pil, prompt, background_pil=None, style_pil=None):
|
148 |
logger.debug(f"process_image_and_prompt ν¨μ μμ - ν둬ννΈ: '{prompt}'")
|
@@ -186,12 +182,10 @@ def process_image_and_prompt(original_pil, prompt, background_pil=None, style_pi
|
|
186 |
return [result_img]
|
187 |
else:
|
188 |
logger.error("generate ν¨μμμ None λ°νλ¨.")
|
189 |
-
return []
|
190 |
-
|
191 |
except Exception as e:
|
192 |
logger.exception("process_image_and_prompt ν¨μμμ μ€λ₯ λ°μ:")
|
193 |
-
return []
|
194 |
-
|
195 |
|
196 |
# --- Gradio μΈν°νμ΄μ€ κ΅¬μ± ---
|
197 |
with gr.Blocks() as demo:
|
@@ -231,7 +225,6 @@ with gr.Blocks() as demo:
|
|
231 |
)
|
232 |
|
233 |
# --- ν
μ€νΈ μ½λ ---
|
234 |
-
# ν
μ€νΈμ© λλ―Έ μ΄λ―Έμ§ (μ€μ μ΄λ―Έμ§λ‘ λ체 κ°λ₯)
|
235 |
dummy_original = Image.new("RGBA", (100, 100), color="red")
|
236 |
dummy_background = Image.new("RGBA", (100, 100), color="green")
|
237 |
dummy_style = Image.new("RGBA", (100, 100), color="blue")
|
|
|
9 |
import mimetypes
|
10 |
import logging
|
11 |
|
12 |
+
# κΈ°μ‘΄μ "from google import genai" λμ λ€μκ³Ό κ°μ΄ μμ
|
13 |
+
import google.generativeai as genai
|
14 |
+
from google.generativeai import types
|
15 |
|
16 |
# .env νμΌμ μ μ₯λ νκ²½λ³μ λ‘λ (python-dotenv μ€μΉ νμ: pip install python-dotenv)
|
17 |
from dotenv import load_dotenv
|
|
|
22 |
format='%(asctime)s - %(levelname)s - %(message)s')
|
23 |
logger = logging.getLogger(__name__)
|
24 |
|
|
|
25 |
def save_binary_file(file_name, data):
|
26 |
logger.debug(f"νμΌμ μ΄μ§ λ°μ΄ν° μ μ₯ μ€: {file_name}")
|
27 |
with open(file_name, "wb") as f:
|
28 |
f.write(data)
|
29 |
logger.debug(f"νμΌ μ μ₯ μλ£: {file_name}")
|
30 |
|
|
|
31 |
def generate(text, file_name, background_file=None, style_file=None, model="gemini-2.0-flash-exp-image-generation"):
|
32 |
logger.debug(f"generate ν¨μ μμ - ν
μ€νΈ: '{text}', νμΌλͺ
: '{file_name}', λͺ¨λΈ: '{model}'")
|
|
|
33 |
try:
|
34 |
# API ν€λ νκ²½λ³μμμ λΆλ¬μ΄
|
35 |
effective_api_key = os.environ.get("GEMINI_API_KEY")
|
|
|
75 |
)
|
76 |
# μ€νμΌ μ΄λ―Έμ§ ννΈ (μ‘΄μ¬ μ)
|
77 |
if style_file is not None:
|
|
|
78 |
style_index = 2 if background_file is not None else 1
|
79 |
parts.append(
|
80 |
types.Part.from_uri(
|
|
|
138 |
|
139 |
except Exception as e:
|
140 |
logger.exception("μ΄λ―Έμ§ μμ± μ€ μ€λ₯ λ°μ:")
|
141 |
+
return None
|
|
|
142 |
|
143 |
def process_image_and_prompt(original_pil, prompt, background_pil=None, style_pil=None):
|
144 |
logger.debug(f"process_image_and_prompt ν¨μ μμ - ν둬ννΈ: '{prompt}'")
|
|
|
182 |
return [result_img]
|
183 |
else:
|
184 |
logger.error("generate ν¨μμμ None λ°νλ¨.")
|
185 |
+
return []
|
|
|
186 |
except Exception as e:
|
187 |
logger.exception("process_image_and_prompt ν¨μμμ μ€λ₯ λ°μ:")
|
188 |
+
return []
|
|
|
189 |
|
190 |
# --- Gradio μΈν°νμ΄μ€ κ΅¬μ± ---
|
191 |
with gr.Blocks() as demo:
|
|
|
225 |
)
|
226 |
|
227 |
# --- ν
μ€νΈ μ½λ ---
|
|
|
228 |
dummy_original = Image.new("RGBA", (100, 100), color="red")
|
229 |
dummy_background = Image.new("RGBA", (100, 100), color="green")
|
230 |
dummy_style = Image.new("RGBA", (100, 100), color="blue")
|