Closed3
Gemini 2.0 Flashで複数画像をもとに新規画像を生成する(=合成)機能の実装

やりたいこと
複数の画像を選択して、それらの特徴を組み合わせた新しい画像を生成したい。
Google CloudのGemini 2.0 Flash画像生成APIを使用。
環境
-
model:gemini-2.0-flash-preview-image-generation
-
Python 3.13

バックエンド側のGemini API呼び出し
index.py
def compose_images_sync(base64_images: list[str], prompt: str):
# Base64画像をPIL Imageに変換
pil_images = convert_images_to_pil(base64_images)
# Gemini APIに送信するコンテンツを構成
# [画像1, 画像2, 画像3, "プロンプト文字列"]の形式
contents = pil_images + [prompt]
# Gemini 2.0 Flash APIを呼び出し
response = client.models.generate_content(
model="gemini-2.0-flash-preview-image-generation",
contents=contents,
config=GenerateContentConfig(
response_modalities=[Modality.TEXT, Modality.IMAGE]
)
)
# 生成された画像を取得
for part in response.candidates[0].content.parts:
if part.inline_data:
return part.inline_data.data
結果
選択した複数の画像+テキストベースのプロンプトを組み合わせて新しい画像が生成。
プロンプトの指示に従って合成画像を生成した。
バックエンドログAPIログ例
INFO: 画像合成リクエストを受信: 画像数=3, プロンプト=これらの画像の特徴を組み合わせ...
INFO: 123~~~~:xxxxx - "POST /api/images/mix HTTP/1.1" 201 Created
INFO: 画像合成が成功しました: 生成画像数=1

エラーの対処
502エラーが出た場合
リージョンの問題だった。
下記のリージョンだと失敗した。
region = "us-west1"
下記のリージョンだと成功すると確認。
region = "us-central1"
このスクラップは1ヶ月前にクローズされました