?? so are the endpoints going to change from Image.__ , or do we just add the model in the parameters as such once we have access in October?;
import os
import openai
import requests
from datetime import datetime
import uuid
openai.api_key = “api_here”
def save_image(image_url, save_path):
response = requests.get(image_url)
with open(save_path, ‘wb’) as f:
f.write(response.content)
print(f"Image saved at {save_path}")
def create_image(prompt, n=1, size=“1024x1024”, save_dir=“./images_creations”):
response = openai.Image.create(prompt=prompt, n=n, size=size, model=“dall-e-3”) #just add it here when referring to endpoint calls?
image_urls = [data[‘url’] for data in response[‘data’]]
if not os.path.exists(save_dir):
os.makedirs(save_dir)
for i, image_url in enumerate(image_urls):
save_path = get_save_path(prompt.replace(" ", "_"), save_dir, f"creation_{i}")
save_image(image_url, save_path)
return image_urls
def create_edit(image_path, mask_path, prompt, n=1, size=“1024x1024”, save_dir=“./images_edits”):
with open(image_path, “rb”) as image_file, open(mask_path, “rb”) as mask_file:
response = openai.Image.create_edit(
image=image_file,
mask=mask_file,
prompt=prompt,
n=n,
size=size,
model=“dall-e-3” #just add it here when referring to endpoint calls?
)
image_data = response[‘data’]
if not os.path.exists(save_dir):
os.makedirs(save_dir)
image_paths = []
for i, data in enumerate(image_data):
save_path = os.path.join(save_dir, f"{prompt.replace(' ', '_')}_{i}.png")
save_image(data['url'], save_path)
image_paths.append(save_path)
return image_paths
def create_variation(image_path, n=1, size=“1024x1024”, save_dir=“./images_variations”, model=“dall-e-3”): #and here when referring to endpoint calls?
with open(image_path, “rb”) as image_file:
response = openai.Image.create_variation(
image=image_file,
n=n,
size=size,
)
image_data = response[‘data’]
if not os.path.exists(save_dir):
os.makedirs(save_dir)
image_paths = []
for i, data in enumerate(image_data):
save_path = os.path.join(save_dir, f"{os.path.basename(image_path).replace('.png', '')}_variation_{i}.png")
save_image(data['url'], save_path)
image_paths.append(save_path)
return image_paths
Example usage:
#image_paths = create_image(“A cute baby sea otter kitty saying meow”, n=2)
#edit_paths = create_edit(image_paths[0], “path/to/your/mask.png”, “A modified image description”, n=1)
#variation_paths = create_variation(image_paths[1], n=1)
def get_save_path(base_name, save_dir, suffix=“”):
timestamp = datetime.now().strftime(“%Y%m%d_%H%M%S”)
unique_id = str(uuid.uuid4())[:8]
filename = f"{base_name}{suffix}{timestamp}_{unique_id}.png"
return os.path.join(save_dir, filename)
def listen_for_commands():
while True:
try:
command = input("Enter a command: “)
args = command.split(” ")
if args[0].lower() == "create":
if len(args) < 2:
print("Usage: create <prompt> [n] [size] [save_dir]")
continue
prompt = args[1]
n = int(args[2]) if len(args) > 2 else 1
size = args[3] if len(args) > 3 else "1024x1024"
save_dir = args[4] if len(args) > 4 else "./images_creations"
image_urls = create_image(prompt, n, size, save_dir)
print("Generated image URLs: ", image_urls)
elif args[0].lower() == "edit":
if len(args) < 4:
print("Usage: edit <image_path> <mask_path> <prompt> [n] [size] [save_dir]")
continue
image_path, mask_path, prompt = args[1], args[2], args[3]
n = int(args[4]) if len(args) > 4 else 1
size = args[5] if len(args) > 5 else "1024x1024"
save_dir = args[6] if len(args) > 6 else "./images_edits"
create_edit(image_path, mask_path, prompt, n, size, save_dir)
elif args[0].lower() == "vary":
if len(args) < 2:
print("Usage: vary <image_path> [n] [size] [save_dir] [save_option]")
continue
image_path = args[1]
n = int(args[2]) if len(args) > 2 else 1
size = args[3] if len(args) > 3 else "1024x1024"
save_dir = args[4] if len(args) > 4 else "./images_variations"
save_option = args[5] if len(args) > 5 else ""
image_urls = create_variation(image_path, n, size, save_dir)
if save_option.lower() == "save":
base_name = os.path.splitext(os.path.basename(image_path))[0]
for i, image_url in enumerate(image_urls):
save_path = get_save_path(base_name, save_dir, f"variation_{i}")
save_image(image_url, save_path)
else:
print("Generated image URLs: ", image_urls)
else:
print(f"Unknown command: {args[0]}")
except Exception as e:
print(f"An error occurred: {e}")
Start listening for commands
listen_for_commands()