Gemini peut générer et traiter des images de manière conversationnelle. Vous pouvez fournir à Gemini du texte, des images ou une combinaison des deux pour effectuer diverses tâches liées aux images, comme la génération et la retouche d'images. Toutes les images générées incluent un filigrane SynthID.
La génération d'images n'est pas disponible dans toutes les régions ni dans tous les pays. Pour en savoir plus, consultez la page Modèles Gemini.
Génération d'images (texte vers image)
Le code suivant montre comment générer une image à partir d'une invite descriptive. Vous devez inclure responseModalities
: ["TEXT", "IMAGE"]
dans votre configuration. La sortie d'image uniquement n'est pas disponible avec ces modèles.
Python
from google import genai
from google.genai import types
from PIL import Image
from io import BytesIO
import base64
client = genai.Client()
contents = ('Hi, can you create a 3d rendered image of a pig '
'with wings and a top hat flying over a happy '
'futuristic scifi city with lots of greenery?')
response = client.models.generate_content(
model="gemini-2.0-flash-preview-image-generation",
contents=contents,
config=types.GenerateContentConfig(
response_modalities=['TEXT', 'IMAGE']
)
)
for part in response.candidates[0].content.parts:
if part.text is not None:
print(part.text)
elif part.inline_data is not None:
image = Image.open(BytesIO((part.inline_data.data)))
image.save('gemini-native-image.png')
image.show()
JavaScript
import { GoogleGenAI, Modality } from "@google/genai";
import * as fs from "node:fs";
async function main() {
const ai = new GoogleGenAI({});
const contents =
"Hi, can you create a 3d rendered image of a pig " +
"with wings and a top hat flying over a happy " +
"futuristic scifi city with lots of greenery?";
// Set responseModalities to include "Image" so the model can generate an image
const response = await ai.models.generateContent({
model: "gemini-2.0-flash-preview-image-generation",
contents: contents,
config: {
responseModalities: [Modality.TEXT, Modality.IMAGE],
},
});
for (const part of response.candidates[0].content.parts) {
// Based on the part type, either show the text or save the image
if (part.text) {
console.log(part.text);
} else if (part.inlineData) {
const imageData = part.inlineData.data;
const buffer = Buffer.from(imageData, "base64");
fs.writeFileSync("gemini-native-image.png", buffer);
console.log("Image saved as gemini-native-image.png");
}
}
}
main();
Go
package main
import (
"context"
"fmt"
"os"
"google.golang.org/genai"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
config := &genai.GenerateContentConfig{
ResponseModalities: []string{"TEXT", "IMAGE"},
}
result, _ := client.Models.GenerateContent(
ctx,
"gemini-2.0-flash-preview-image-generation",
genai.Text("Hi, can you create a 3d rendered image of a pig " +
"with wings and a top hat flying over a happy " +
"futuristic scifi city with lots of greenery?"),
config,
)
for _, part := range result.Candidates[0].Content.Parts {
if part.Text != "" {
fmt.Println(part.Text)
} else if part.InlineData != nil {
imageBytes := part.InlineData.Data
outputFilename := "gemini_generated_image.png"
_ = os.WriteFile(outputFilename, imageBytes, 0644)
}
}
}
REST
curl -s -X POST
"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-preview-image-generation:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts": [
{"text": "Hi, can you create a 3d rendered image of a pig with wings and a top hat flying over a happy futuristic scifi city with lots of greenery?"}
]
}],
"generationConfig":{"responseModalities":["TEXT","IMAGE"]}
}' \
| grep -o '"data": "[^"]*"' \
| cut -d'"' -f4 \
| base64 --decode > gemini-native-image.png

Retouche d'images (texte et image vers image)
Pour modifier une image, ajoutez-la en tant qu'entrée. L'exemple suivant montre comment importer des images encodées en base64. Pour plusieurs images et des charges utiles plus importantes, consultez la section Entrée d'image.
Python
from google import genai
from google.genai import types
from PIL import Image
from io import BytesIO
import PIL.Image
image = PIL.Image.open('/path/to/image.png')
client = genai.Client()
text_input = ('Hi, This is a picture of me.'
'Can you add a llama next to me?',)
response = client.models.generate_content(
model="gemini-2.0-flash-preview-image-generation",
contents=[text_input, image],
config=types.GenerateContentConfig(
response_modalities=['TEXT', 'IMAGE']
)
)
for part in response.candidates[0].content.parts:
if part.text is not None:
print(part.text)
elif part.inline_data is not None:
image = Image.open(BytesIO((part.inline_data.data)))
image.show()
JavaScript
import { GoogleGenAI, Modality } from "@google/genai";
import * as fs from "node:fs";
async function main() {
const ai = new GoogleGenAI({});
// Load the image from the local file system
const imagePath = "path/to/image.png";
const imageData = fs.readFileSync(imagePath);
const base64Image = imageData.toString("base64");
// Prepare the content parts
const contents = [
{ text: "Can you add a llama next to the image?" },
{
inlineData: {
mimeType: "image/png",
data: base64Image,
},
},
];
// Set responseModalities to include "Image" so the model can generate an image
const response = await ai.models.generateContent({
model: "gemini-2.0-flash-preview-image-generation",
contents: contents,
config: {
responseModalities: [Modality.TEXT, Modality.IMAGE],
},
});
for (const part of response.candidates[0].content.parts) {
// Based on the part type, either show the text or save the image
if (part.text) {
console.log(part.text);
} else if (part.inlineData) {
const imageData = part.inlineData.data;
const buffer = Buffer.from(imageData, "base64");
fs.writeFileSync("gemini-native-image.png", buffer);
console.log("Image saved as gemini-native-image.png");
}
}
}
main();
Go
package main
import (
"context"
"fmt"
"os"
"google.golang.org/genai"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
imagePath := "/path/to/image.png"
imgData, _ := os.ReadFile(imagePath)
parts := []*genai.Part{
genai.NewPartFromText("Hi, This is a picture of me. Can you add a llama next to me?"),
&genai.Part{
InlineData: &genai.Blob{
MIMEType: "image/png",
Data: imgData,
},
},
}
contents := []*genai.Content{
genai.NewContentFromParts(parts, genai.RoleUser),
}
config := &genai.GenerateContentConfig{
ResponseModalities: []string{"TEXT", "IMAGE"},
}
result, _ := client.Models.GenerateContent(
ctx,
"gemini-2.0-flash-preview-image-generation",
contents,
config,
)
for _, part := range result.Candidates[0].Content.Parts {
if part.Text != "" {
fmt.Println(part.Text)
} else if part.InlineData != nil {
imageBytes := part.InlineData.Data
outputFilename := "gemini_generated_image.png"
_ = os.WriteFile(outputFilename, imageBytes, 0644)
}
}
}
REST
IMG_PATH=/path/to/your/image1.jpeg
if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
B64FLAGS="--input"
else
B64FLAGS="-w0"
fi
IMG_BASE64=$(base64 "$B64FLAGS" "$IMG_PATH" 2>&1)
curl -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-preview-image-generation:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d "{
\"contents\": [{
\"parts\":[
{\"text\": \"'Hi, This is a picture of me. Can you add a llama next to me\"},
{
\"inline_data\": {
\"mime_type\":\"image/jpeg\",
\"data\": \"$IMG_BASE64\"
}
}
]
}],
\"generationConfig\": {\"responseModalities\": [\"TEXT\", \"IMAGE\"]}
}" \
| grep -o '"data": "[^"]*"' \
| cut -d'"' -f4 \
| base64 --decode > gemini-edited-image.png
Autres modes de génération d'images
Gemini prend en charge d'autres modes d'interaction avec les images en fonction de la structure et du contexte de la requête, y compris :
- Texte vers image(s) et texte (entrelacé) : génère des images avec du texte associé.
- Exemple de requête : "Génère une recette illustrée de paella."
- Image(s) et texte vers image(s) et texte (entrelacés) : utilise des images et du texte en entrée pour créer de nouvelles images et du texte associés.
- Exemple de requête : (Avec l'image d'une pièce meublée) "Quelles autres couleurs de canapés conviendraient à mon espace ? Pouvez-vous modifier l'image ?"
- Modification d'images multitour (chat) : continuez à générer ou modifier des images de manière conversationnelle.
- Exemples de requêtes : [importe une image d'une voiture bleue]. , "Transforme cette voiture en cabriolet.", "Maintenant, change la couleur en jaune."
Limites
- Pour des performances optimales, utilisez les langues suivantes : EN, es-MX, ja-JP, zh-CN, hi-IN.
- La génération d'images n'est pas compatible avec les entrées audio ou vidéo.
- La génération d'images ne se déclenche pas toujours :
- Le modèle ne peut générer que du texte. Essayez de demander explicitement des images (par exemple, "génère une image", "fournis des images au fur et à mesure", "mets à jour l'image").
- Le modèle peut s'arrêter de générer du contenu en cours de route. Réessayez ou essayez une autre requête.
- Lorsque vous générez du texte pour une image, Gemini fonctionne mieux si vous générez d'abord le texte, puis demandez une image avec le texte.
- La génération d'images n'est pas disponible dans certaines régions/certains pays. Pour en savoir plus, consultez Modèles.
Quand utiliser Imagen ?
En plus d'utiliser les fonctionnalités de génération d'images intégrées à Gemini, vous pouvez également accéder à Imagen, notre modèle spécialisé dans la génération d'images, via l'API Gemini.
Choisissez Gemini lorsque :
- Vous avez besoin d'images contextuellement pertinentes qui exploitent la connaissance du monde et le raisonnement.
- Il est important de combiner harmonieusement le texte et les images.
- Vous souhaitez intégrer des éléments visuels précis dans de longues séquences de texte.
- Vous souhaitez modifier des images de manière conversationnelle tout en conservant le contexte.
Choisissez Imagen lorsque :
- La qualité de l'image, le photoréalisme, les détails artistiques ou les styles spécifiques (par exemple, l'impressionnisme ou l'anime) sont des priorités absolues.
- Effectuer des tâches de retouche spécialisées, comme la modification de l'arrière-plan d'un produit ou l'amélioration de la taille d'une image
- Intégrer une image de marque ou un style, ou générer des logos et des conceptions de produits
Imagen 4 devrait être votre modèle de référence pour commencer à générer des images avec Imagen. Choisissez Imagen 4 Ultra pour les cas d'utilisation avancés ou lorsque vous avez besoin de la meilleure qualité d'image. Notez qu'Imagen 4 Ultra ne peut générer qu'une seule image à la fois.
Étape suivante
- Consultez le guide Veo pour découvrir comment générer des vidéos avec l'API Gemini.
- Pour en savoir plus sur les modèles Gemini, consultez Modèles Gemini et Modèles expérimentaux.