🎨 Hoe afbeeldingen genereren met OpenAI's gpt-image-1
Heb je ooit een verhaal of idee willen omzetten in een visuele scène met behulp van AI? OpenAI’s nieuwe model gpt-image-1
maakt dat makkelijker en krachtiger dan ooit. Hier is hoe we het gebruiken in ons eigen project, StoryGPT, om prachtige illustraties te creëren vanuit tekst—en zelfs te verbeteren met personage-afbeeldingen.
🖼️ Stap 1: Bereid je Prompt Voor
Net als bij GPT-tekstmodellen, heeft gpt-image-1
een beschrijvende prompt nodig. Bijvoorbeeld:
Een gezellig bos huisje bij zonsondergang, met gloeiende ramen, omgeven door hoge bomen.
Hoe beter je prompt, hoe beter je afbeelding. Voeg sfeer, tijd van de dag, stijl—wat je maar belangrijk vindt—toe.
🧙♂️ Stap 2: Voeg Entiteit Afbeeldingen Toe (Optioneel maar Geweldig)
Stel dat je al een afbeelding van een personage hebt (bijv. een hond met een hoed). Je kunt deze uploaden als base64 en gebruiken als visuele referentie.
Vervolgens kun je het uitbreiden als volgt:
"Voeg het volgende toe aan de afbeelding: de hond heeft een rode sjaal en staat op twee poten."
Op die manier bouwt het model bovenop de originele afbeelding in plaats van helemaal opnieuw te beginnen.
📦 Stap 3: Roep de API Aan
Er zijn twee modi:
🧠 Alleen tekst-prompt:
client.images.generate(
model="gpt-image-1",
prompt="Een futuristische stadsgezicht bij nacht met vliegende auto's",
size="1024x1024",
quality="low",
n=1
)
🖼️ Bewerking met afbeelding input (zoals toevoegingen aan personages):
httpx.post(
"https://api.openai.com/v1/images/edits",
headers={"Authorization": f"Bearer {API_KEY}"},
data={
"prompt": "Voeg magische gloeiende ogen toe aan het personage",
"model": "gpt-image-1",
"size": "1024x1024",
"quality": "low"
},
files=[("image[]", ("dog.png", open("dog.png", "rb"), "image/png"))]
)
Het resultaat zal een base64-afbeelding omvatten die je kunt tonen, opslaan of op schijf bewaren.
✅ Dat is Alles!
Je kunt nu visuals genereren voor je personages, settings of volledige scènes. In StoryGPT gebruiken we dit om gegenereerde verhalen tot leven te brengen—personage voor personage, pagina voor pagina.
Probeer het zelf en geef je verhalen een gezicht!
🧪 Volledig Werkend Voorbeeld – Afbeeldingen Genereren met gpt-image-1
Dit script vereist:
openai
pakket (pip install openai
)httpx
voor het verzenden van multipart image uploads (pip install httpx
)- Een OpenAI API-sleutel in je omgeving als
OPENAI_API_KEY
import os
import base64
import httpx
from openai import OpenAI
## Zorg ervoor dat dit is ingesteld in je omgeving
OPENAI_API_KEY = os.environ["OPENAI_API_KEY"]
## Eenvoudige afbeeldingsgeneratie met alleen een tekstprompt
def generate_image_from_prompt(prompt: str):
client = OpenAI()
response = client.images.generate(
model="gpt-image-1",
prompt=prompt,
size="1024x1024",
quality="low",
n=1,
)
image_b64 = response.data[0].b64_json
save_image(image_b64, "image_text_only.png")
## Afbeeldingsgeneratie met een geüploade base64 afbeelding en een verbeterde prompt
def generate_image_with_entity(image_path: str, prompt: str):
with open(image_path, "rb") as f:
image_bytes = f.read()
files = [
("image[]", (os.path.basename(image_path), image_bytes, "image/png"))
]
data = {
"prompt": prompt,
"model": "gpt-image-1",
"size": "1024x1024",
"quality": "low",
}
headers = {
"Authorization": f"Bearer {OPENAI_API_KEY}",
}
response = httpx.post(
"https://api.openai.com/v1/images/edits",
headers=headers,
data=data,
files=files,
timeout=60,
)
if response.status_code != 200:
raise Exception(f"Afbeeldingsgeneratie mislukt: {response.text}")
image_b64 = response.json()["data"][0]["b64_json"]
save_image(image_b64, "image_with_entity.png")
def save_image(image_b64: str, filename: str):
os.makedirs("out_images", exist_ok=True)
path = os.path.join("out_images", filename)
with open(path, "wb") as f:
f.write(base64.b64decode(image_b64))
print(f"✅ Afbeelding opgeslagen naar: {path}")
if __name__ == "__main__":
# Modus 1: Genereer vanuit prompt
print("🔮 Genereren vanuit alleen prompt...")
generate_image_from_prompt("Een sprookjeskasteel op een drijvend eiland onder een paarse hemel")
# Modus 2: Genereer vanuit prompt + entitei-afbeelding
print("🖼️ Genereren met entiteitsreferentie...")
generate_image_with_entity(
image_path="dog.png", # vervang door je eigen afbeelding
prompt="Voeg een rode sjaal en een monocle toe aan de hond"
)
🧠 Samenvatting
generate_image_from_prompt(...)
→ heeft alleen tekst nodiggenerate_image_with_entity(...)
→ bevat je aangepaste personage of referentieafbeelding- Resultaten worden opgeslagen in de map
out_images/