Linebot / Image_text_generation.py
alanchen1115's picture
Update Image_text_generation.py
d5fa7bd verified
raw
history blame
1.69 kB
import os
import io
import tempfile
from datetime import datetime
import PIL.Image
from google import genai
from google.genai import types
import httpx
genai_client = genai.Client(api_key=os.environ["GOOGLE_API_KEY"])
class Image_text_Generator:
def __init__(self, user_id):
self.user_id = user_id
def generate_image_with_gemini(self, prompt):
"""
使用 Gemini ζ¨‘εž‹η”Ÿζˆεœ–η‰‡γ€‚
參數:
prompt (str): η”¨ζ–Όη”Ÿζˆεœ–η‰‡ηš„ζη€Ίθ©žγ€‚
θΏ”ε›ž:
bytes: η”Ÿζˆηš„εœ–η‰‡ηš„δΊŒι€²δ½θ³‡ζ–™οΌŒε¦‚ζžœη”Ÿζˆε€±ζ•—ε‰‡θΏ”ε›ž None。
"""
response = genai_client.models.generate_content(
model="gemini-2.0-flash-exp",
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 None
def upload_image_to_tmp(self, image_binary):
"""
θΏ”ε›ž:
str: δΈŠε‚³εΎŒηš„εœ–η‰‡ URLοΌŒε¦‚ζžœδΈŠε‚³ε€±ζ•—ε‰‡θΏ”ε›ž None。
"""
try:
# ε°‡δΊŒι€²δ½θ³‡ζ–™θ½‰ζ›η‚Ί PIL Image
image = PIL.Image.open(io.BytesIO(image_binary))
# ε»Ίη«‹ζš«ε­˜ζͺ”ζ‘ˆδ»₯δΎΏδΈŠε‚³
image.save('static/'+self.user_id+'.png', format='PNG')
# θΏ”ε›žεœ–η‰‡ηš„ι€£η΅
return 'static/'+self.user_id+'.png'
except Exception as e:
print(f"εœ–η‰‡δΈŠε‚³ε€±ζ•—: {e}")
return None