🎨 Comment Générer des Images avec le Modèle gpt-image-1
d'OpenAI
Si vous avez déjà voulu transformer une histoire ou une idée en une scène visuelle grâce à l'IA, le nouveau modèle gpt-image-1
d'OpenAI rend cela plus facile et plus puissant que jamais. Voici comment nous l'utilisons dans notre propre projet, StoryGPT, pour créer de belles illustrations à partir de textes, et même les agrémenter d'images de personnages.
🖼️ Étape 1 : Préparez Votre Prompt
Comme avec les modèles de texte de GPT, gpt-image-1
nécessite un prompt descriptif. Par exemple :
Un chalet de forêt chaleureux au coucher du soleil, aux fenêtres illuminées, entouré de grands arbres.
Plus votre prompt est précis, meilleure sera votre image. Ajoutez l'ambiance, l'heure de la journée, le style—tout ce qui compte.
🧙♂️ Étape 2 : Ajoutez des Images d'Entité (Optionnel mais Génial)
Disons que vous avez déjà une image d'un personnage (par exemple, un chien avec un chapeau). Vous pouvez la télécharger en base64 et l'utiliser comme référence visuelle.
Ensuite, vous pouvez l'étendre ainsi :
"Ajoutez ce qui suit à l'image : le chien porte une écharpe rouge et se tient sur deux pattes."
Ainsi, le modèle construit par-dessus l'image originale plutôt que de repartir de zéro.
📦 Étape 3 : Appelez l'API
Il y a deux modes :
🧠 Prompt textuel uniquement :
client.images.generate(
model="gpt-image-1",
prompt="Un skyline de ville futuriste la nuit avec des voitures volantes",
size="1024x1024",
quality="low",
n=1
)
🖼️ Éditer avec des images en entrée (comme ajouter à des personnages) :
httpx.post(
"https://api.openai.com/v1/images/edits",
headers={"Authorization": f"Bearer {API_KEY}"},
data={
"prompt": "Ajoutez des yeux magiques lumineux au personnage",
"model": "gpt-image-1",
"size": "1024x1024",
"quality": "low"
},
files=[("image[]", ("dog.png", open("dog.png", "rb"), "image/png"))]
)
Le résultat inclura une image en base64 que vous pouvez afficher, stocker ou enregistrer sur disque.
✅ C'est Tout !
Vous pouvez maintenant générer des visuels pour vos personnages, décors ou scènes entières. Dans StoryGPT, nous utilisons cela pour donner vie aux histoires générées—personnage par personnage, page par page.
Essayez-le vous-même et donnez un visage à vos histoires !
🧪 Exemple Fonctionnel Complet – Génération d'Images avec gpt-image-1
Ce script nécessite :
- Le package
openai
(pip install openai
) httpx
pour envoyer des téléchargements d'images multipartites (pip install httpx
)- Une clé API OpenAI dans votre environnement sous
OPENAI_API_KEY
import os
import base64
import httpx
from openai import OpenAI
## Assurez-vous que ceci est défini dans votre env
OPENAI_API_KEY = os.environ["OPENAI_API_KEY"]
## Génération d'image simple en utilisant juste un prompt textuel
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")
## Génération d'image en utilisant une image téléchargée en base64 et un prompt amélioré
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"Échec de la génération d'image : {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"✅ Image sauvegardée dans : {path}")
if __name__ == "__main__":
# Mode 1 : Générer à partir du prompt
print("🔮 Générer à partir du prompt uniquement...")
generate_image_from_prompt("Un château de conte de fées sur une île flottante sous un ciel violet")
# Mode 2 : Générer à partir du prompt + image d'entité
print("🖼️ Générer avec référence à l'entité...")
generate_image_with_entity(
image_path="dog.png", # remplacez par votre image réelle
prompt="Ajoutez une écharpe rouge et un monocle au chien"
)
🧠 Résumé
generate_image_from_prompt(...)
→ ne nécessite que du textegenerate_image_with_entity(...)
→ inclut votre personnage ou image de référence personnalisée- Les résultats sont sauvegardés dans le dossier
out_images/