Slicelayers commited on
Commit
8df58f5
·
verified ·
1 Parent(s): e736798

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -1
app.py CHANGED
@@ -19,6 +19,9 @@ import httpx # ★★★ 変更点: httpx を追加
19
  API_KEY = os.environ.get("NANO_BANANA_API", "") # Secret名 "NANO_BANANA_API" を使用
20
  API_URL = "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-image-preview:generateContent?key="
21
 
 
 
 
22
  # --- ヘルパー関数 (Helper Functions) ---
23
 
24
  def pil_to_base64(img: Image.Image) -> str:
@@ -38,8 +41,22 @@ async def nano_banana_completion_api(base_image: Image.Image, prompt: str) -> Im
38
  if not API_KEY:
39
  raise gr.Error("エラー: APIキーが設定されていません。Hugging Face Secretsで 'NANO_BANANA_API' を設定してください。")
40
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  # Base64エンコード
42
- base64_image = pil_to_base64(base_image)
43
 
44
  # プロンプトと画像を含むペイロードの構築(Image-to-Image用)
45
  payload = {
 
19
  API_KEY = os.environ.get("NANO_BANANA_API", "") # Secret名 "NANO_BANANA_API" を使用
20
  API_URL = "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-image-preview:generateContent?key="
21
 
22
+ # API送信用の最大画像サイズを定義 (ほとんどのAIモデルで推奨される最大値に近い)
23
+ MAX_API_SIZE = 1024
24
+
25
  # --- ヘルパー関数 (Helper Functions) ---
26
 
27
  def pil_to_base64(img: Image.Image) -> str:
 
41
  if not API_KEY:
42
  raise gr.Error("エラー: APIキーが設定されていません。Hugging Face Secretsで 'NANO_BANANA_API' を設定してください。")
43
 
44
+ # --- ★★★ 修正点3: API送信前に画像サイズを調整 ★★★ ---
45
+ resized_image = base_image.copy()
46
+ w, h = resized_image.size
47
+
48
+ if max(w, h) > MAX_API_SIZE:
49
+ if w > h:
50
+ new_w = MAX_API_SIZE
51
+ new_h = int(h * (MAX_API_SIZE / w))
52
+ else:
53
+ new_h = MAX_API_SIZE
54
+ new_w = int(w * (MAX_API_SIZE / h))
55
+ resized_image = resized_image.resize((new_w, new_h), Image.Resampling.LANCZOS)
56
+ print(f"--- 画像をAPI送信のためリサイズしました: {w}x{h} -> {new_w}x{new_h} ---")
57
+
58
  # Base64エンコード
59
+ base64_image = pil_to_base64(resized_image)
60
 
61
  # プロンプトと画像を含むペイロードの構築(Image-to-Image用)
62
  payload = {