Linebot / Image_text_generation.py
alanchen1115's picture
Update Image_text_generation.py
d5fa7bd verified
Raw
History Blame Contribute Delete
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