Generare Immagini con gpt-image-1 di OpenAI

🎨 Come Generare Immagini con gpt-image-1
di OpenAI
Se hai mai voluto trasformare una storia o un'idea in una scena visiva utilizzando l'IA, il nuovo modello gpt-image-1
di OpenAI rende tutto ciò più semplice e potente che mai. Ecco come lo utilizziamo nel nostro progetto, StoryGPT, per creare belle illustrazioni a partire dal testo—e persino migliorarle con immagini di personaggi.
🖼️ Passo 1: Prepara il Tuo Prompt
Proprio come i modelli di testo GPT, gpt-image-1
ha bisogno di un prompt descrittivo. Ad esempio:
Una accogliente casetta nel bosco al tramonto, finestre illuminate, circondata da alberi alti.
Più il tuo prompt è dettagliato, migliore sarà la tua immagine. Aggiungi l'atmosfera, il momento della giornata, lo stile—qualunque cosa sia importante.
🧙♂️ Passo 2: Aggiungi Immagini di Entità (Opzionale ma Fantastico)
Diciamo che hai già un'immagine di un personaggio (ad esempio, un cane con un cappello). Puoi caricarla come base64 e usarla come riferimento visivo.
Poi, puoi estenderla in questo modo:
"Aggiungi quanto segue all'immagine: il cane ha una sciarpa rossa e si regge su due zampe."
In questo modo, il modello costruisce sull'immagine originale piuttosto che partire da zero.
📦 Passo 3: Chiama l'API
Ci sono due modalità:
🧠 Prompt solo testo:
client.images.generate(
model="gpt-image-1",
prompt="Un skyline di una città futuristica di notte con auto volanti",
size="1024x1024",
quality="low",
n=1
)
🖼️ Modifica con input di immagine (come aggiungere a personaggi):
httpx.post(
"https://api.openai.com/v1/images/edits",
headers={"Authorization": f"Bearer {API_KEY}"},
data={
"prompt": "Aggiungi occhi magici luminosi al personaggio",
"model": "gpt-image-1",
"size": "1024x1024",
"quality": "low"
},
files=[("image[]", ("dog.png", open("dog.png", "rb"), "image/png"))]
)
Il risultato includerà un'immagine in base64 che puoi visualizzare, archiviare o salvare su disco.
✅ Ecco Fatto!
Ora puoi generare immagini per i tuoi personaggi, ambientazioni o intere scene. In StoryGPT, utilizziamo questo per dare vita alle storie generate—personaggio per personaggio, pagina per pagina.
Provalo tu stesso e dai un volto alle tue storie!
🧪 Esempio Completo di Funzionamento – Generazione di Immagini con gpt-image-1
Questo script richiede:
- Pacchetto
openai
(pip install openai
) httpx
per inviare caricamenti di immagini multipart (pip install httpx
)- Una chiave API OpenAI nel tuo ambiente come
OPENAI_API_KEY
import os
import base64
import httpx
from openai import OpenAI
## Assicurati che sia impostato nel tuo ambiente
OPENAI_API_KEY = os.environ["OPENAI_API_KEY"]
## Generazione semplice di immagini utilizzando solo un prompt di testo
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")
## Generazione di immagini utilizzando un'immagine base64 caricata e un prompt migliorato
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"Generazione dell'immagine fallita: {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"✅ Immagine salvata in: {path}")
if __name__ == "__main__":
# Modalità 1: Generare dal prompt
print("🔮 Generazione solo dal prompt...")
generate_image_from_prompt("Un castello da fiaba su un'isola galleggiante sotto un cielo viola")
# Modalità 2: Generare dal prompt + immagine entità
print("🖼️ Generazione con riferimento all'entità...")
generate_image_with_entity(
image_path="dog.png", # sostituisci con la tua immagine reale
prompt="Aggiungi una sciarpa rossa e un monocolo al cane"
)
🧠 Riepilogo
generate_image_from_prompt(...)
→ necessita solo di testogenerate_image_with_entity(...)
→ include la tua immagine di personaggio o di riferimento personalizzata- I risultati vengono salvati nella cartella
out_images/