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