File size: 1,691 Bytes
35992f9
 
4911caa
35992f9
31c7c46
41232ef
 
9183f10
31c7c46
c76a4f6
 
9183f10
e889030
 
8a69374
e889030
31c7c46
 
 
 
 
 
 
 
 
 
c76a4f6
5cf2508
31c7c46
 
 
 
 
 
 
 
 
 
 
7eadcbc
31c7c46
 
 
 
 
 
 
 
 
9cb73af
35992f9
31c7c46
9cb73af
31c7c46
 
 
9183f10
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
49
50
51
52
53
54
55
56
57
58
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