Dall-E
Midjourney
Stable Diffusion
Ia Generative
Comparer les outils de génération d'images par IA et intégrer l'API DALL-E 3 dans vos projets web.
Comparatif DALL-E, Midjourney, Stable Diffusion
Trois acteurs dominent la génération d'images par IA. Chacun a ses forces selon l'usage visé :
- DALL-E 3 (OpenAI) — API REST simple, excellente compréhension des prompts texte, idéal pour les applications web.
- Midjourney — qualité artistique exceptionnelle, accessible via Discord, pas d'API publique officielle.
- Stable Diffusion — open source, exécutable en local, personnalisable avec des LoRA et ControlNet.
Choix rapide : DALL-E pour une API clé-en-main, Midjourney pour le rendu artistique, Stable Diffusion pour la confidentialité ou l'usage en volume.
Intégrer l'API DALL-E 3
L'API OpenAI expose un endpoint /images/generations pour générer des images à partir d'un prompt texte. Installation :
npm install openai
Génération d'une image avec DALL-E 3 en JavaScript :
import OpenAI from 'openai';
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
async function genererImage(prompt) {
const response = await openai.images.generate({
model: 'dall-e-3',
prompt,
n: 1,
size: '1024x1024',
quality: 'standard', // ou 'hd'
response_format: 'url' // ou 'b64_json'
});
return response.data[0].url;
}
// Utilisation
const url = await genererImage('Un développeur Angular entouré de code, style cyberpunk');
console.info(url);
Tarification DALL-E 3
- Standard 1024×1024 : ~0,04 $ par image.
- HD 1024×1024 : ~0,08 $ par image.
- Format 1792×1024 ou 1024×1792 disponible en HD.
Pour afficher l'image générée dans une page HTML :
const img = document.createElement('img');
img.src = await genererImage(prompt);
img.alt = prompt;
document.body.appendChild(img);
Stable Diffusion en local
Stable Diffusion peut tourner sur votre machine via AUTOMATIC1111 ou via l'API Diffusers de Hugging Face. La solution la plus simple pour les développeurs web : l'API REST locale d'AUTOMATIC1111.
# Lancer AUTOMATIC1111 avec API activée
./webui.sh --api --nowebui
# Générer une image via l'API REST locale
curl -X POST http://localhost:7860/sdapi/v1/txt2img \
-H "Content-Type: application/json" \
-d '{
"prompt": "a futuristic city at night, neon lights",
"negative_prompt": "blurry, low quality",
"steps": 20,
"width": 512,
"height": 512,
"cfg_scale": 7
}'
En JavaScript depuis Node.js :
const response = await fetch('http://localhost:7860/sdapi/v1/txt2img', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
prompt: 'portrait of a developer, digital art',
negative_prompt: 'ugly, distorted',
steps: 20,
width: 512,
height: 512
})
});
const data = await response.json();
// data.images[0] est une image base64
const src = `data:image/png;base64,${data.images[0]}`;
Avantage local : aucun coût par image, confidentialité totale des données, possibilité de générer en masse.
Rédiger de bons prompts d'image
La qualité du prompt détermine 80 % du résultat. Voici la structure recommandée :
- Sujet principal — ce que vous voulez voir (ex: "a developer working on a laptop").
- Style visuel — photorealistic, digital art, oil painting, anime, cyberpunk…
- Éclairage — golden hour, studio lighting, neon, dramatic shadows.
- Qualité — highly detailed, 8k, sharp focus, professional.
- Negative prompt — blurry, low quality, distorted, watermark.
// Exemple de prompt structuré
const prompt = [
'portrait of a web developer',
'sitting at a modern desk with multiple monitors',
'showing Angular code',
'cyberpunk style, neon blue and red lighting',
'highly detailed, 4k, sharp focus'
].join(', ');
const negativePrompt = 'blurry, low quality, distorted, ugly, watermark';
Bonnes pratiques et limites
- Toujours valider et modérer le contenu généré avant affichage public.
- Stocker les images générées dans un CDN (S3/CloudFront) plutôt que servir les URLs temporaires OpenAI.
- Mettre en cache les résultats identiques pour éviter des appels API redondants.
- Afficher un watermark ou mention "généré par IA" pour la transparence.
- Respecter les CGU : pas de personnes réelles sans consentement, pas de contenu haineux.
Workflow production : prompt → génération → modération → stockage CDN → affichage. Ne jamais afficher directement les URLs temporaires d'OpenAI en production.