|
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: |
|
|
|
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 |
|
|
|
|