File size: 1,498 Bytes
35992f9 4911caa 35992f9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
import os
import io
import PIL.Image
import tempfile
from google import genai
from google.genai import types
from datetime import datetime
# 使用 Gemini 生成圖片
client = genai.Client(api_key=os.environ["GOOGLE_API_KEY"])
def generate_image_with_gemini(prompt):
response = client.models.generate_content(
model="gemini-2.0-flash-exp-image-generation",
contents=prompt,
config=types.GenerateContentConfig(response_modalities=['Text', 'Image'])
)
for part in response.candidates[0].content.parts:
if part.text is not None:
print(part.text)
elif part.inline_data is not None:
return part.inline_data.data
return
def upload_image_to_imgur(client, image_binary, album=None, name="gemini-image", title="gemini Generated Image"):
# 將 binary 資料轉為 PIL Image
image = PIL.Image.open(io.BytesIO(image_binary))
# 建立暫存檔案來上傳 (因為 ImgurClient 需要檔案路徑)
with tempfile.NamedTemporaryFile(suffix=".png", delete=True) as tmp:
image.save(tmp.name, format='PNG')
# 準備上傳資訊
config = {
'album': album,
'name': name,
'title': title,
'description': f'Generated by gemini - {datetime.now()}'
}
# 使用 client 進行圖片上傳
uploaded_image = client.upload_from_path(tmp.name, config=config, anon=False)
# 回傳圖片網址
return uploaded_image['link']
|