-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpainter.py
78 lines (54 loc) · 2.01 KB
/
painter.py
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import google.generativeai as genai
import PIL.Image
import requests
import os
from dotenv import load_dotenv
from openai import OpenAI
from io import BytesIO
from datetime import datetime
load_dotenv()
my_key_openai = os.getenv("openai_apikey")
client = OpenAI(
api_key=my_key_openai
)
def generate_image_with_dalle(prompt):
AI_Response =client.images.generate(
model="dall-e-3",
size="1024x1024",
quality="hd",
n=1,
response_format="url",
prompt=prompt
)
image_url = AI_Response.data[0].url
response = requests.get(image_url)
image_bytes = BytesIO(response.content)
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"./img/generated_image_{timestamp}.png"
if not os.path.exists("./img"):
os.makedirs("./img")
with open(filename, "wb") as file:
file.write(image_bytes.getbuffer)
return filename
my_key_google = os.getenv("google_apikey")
genai.configure(
api_key=my_key_google
)
def gemini_vision_local_file(image_path, prompt):
multimodailty_prompt = f"""Bu gönderdiğim resmi, bazı ek yönergelerle birlikte yeniden oluşturmanı istiyorum.
Bunun için ilk olarak resmi son derece ayrıntılı biçimde betimle. Daha sonra sonucunda bana vereceğin metni, bir yapay zeka
modelini kullanarak görsel oluşturmakta kullanacağım. O yüzden yanıtına son halini verirken bunun resim üretmekte kullanılacak bir
girdi yani prompt olduğunu dikkate al. İşte ek yönerge şöyle: {prompt}
"""
client = genai.GenerativeModel(model_name="gemini_pro_vision")
source_image = PIL.Image.open(image_path)
AI_Response = client.generate_content([
multimodailty_prompt,
source_image
])
AI_Response.resolve()
return AI_Response.text
def generate_image(image_path, prompt):
image_base_prompt = gemini_vision_local_file(image_path=image_path, prompt=prompt)
filename = generate_image_with_dalle(prompt=image_base_prompt)
return filename