Générer des images avec Gemini

L'aperçu d'image Gemini 2.5 Flash permet de générer des réponses dans plusieurs modalités, y compris du texte et des images.

Génération d'images

La version Preview publique de Gemini Flash pour la génération d'images (gemini-2.5-flash-image-preview) permet de générer des images en plus du texte. Les capacités de Gemini sont ainsi étendues pour inclure les éléments suivants :

  • Générez des images de manière itérative en conversant en langage naturel, et ajustez-les tout en conservant la cohérence et le contexte.
  • Générez des images avec un rendu de texte long de haute qualité.
  • Générez du texte et des images entrelacés. Par exemple, un article de blog avec du texte et des images en un seul tour. Auparavant, cela nécessitait d'enchaîner plusieurs modèles.
  • Générez des images en utilisant les connaissances du monde et les capacités de raisonnement de Gemini.

Avec cette version expérimentale publique, Gemini 2.5 Flash Image Preview peut générer des images en 1 024 px, prend en charge la génération d'images de personnes et contient des filtres de sécurité mis à jour qui offrent une expérience utilisateur plus flexible et moins restrictive.

Il est compatible avec les modalités et les fonctionnalités suivantes :

  • Texte vers image

    • Exemple de requête : "Génère une image de la tour Eiffel avec des feux d'artifice en arrière-plan."
  • Texte vers image (rendu de texte)

    • Exemple de requête : "génère une photo cinématographique d'un grand bâtiment avec cette projection de texte géante sur la façade : "Gemini 2.5 peut désormais générer du texte long""
  • Texte en image(s) et texte (entrelacé)

    • Exemple de requête : "Génère une recette illustrée de paella. Crée des images à côté du texte lorsque tu génères la recette."
    • Exemple de requête : "Génère une histoire sur un chien dans un style d'animation cartoon 3D. Pour chaque scène, génère une image."
  • Image(s) et texte vers image(s) et texte (entrelacés)

    • Exemple de requête : (Avec une image d'une pièce meublée) "Quelles autres couleurs de canapés conviendraient à mon espace ? Peux-tu mettre à jour l'image ?"
  • Génération d'images en fonction de la localisation

    • Exemple de requête : "Génère une image d'un petit-déjeuner."

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 peut générer du texte uniquement. Essayez de demander explicitement des images. Par exemple, "fournis des images au fur et à mesure".
    • Le modèle peut générer du texte sous forme d'image. Essayez de demander explicitement des résultats textuels. Par exemple, "génère un texte narratif avec des illustrations".
    • Le modèle peut s'arrêter de générer du contenu en cours de route. Réessayez ou saisissez une autre requête.

Générer des images

Les sections suivantes expliquent comment générer des images à l'aide de Vertex AI Studio ou de l'API.

Pour obtenir des conseils et connaître les bonnes pratiques concernant les requêtes, consultez Concevoir des requêtes multimodales.

Console

Pour utiliser la génération d'images :

  1. Ouvrez Vertex AI Studio > Créer une requête.
  2. Cliquez sur Changer de modèle, puis sélectionnez gemini-2.5-flash-image-preview dans le menu.
  3. Dans le panneau Sorties, sélectionnez Image et texte dans le menu déroulant.
  4. Dans la zone de texte Écrivez une requête, saisissez une description de l'image que vous souhaitez générer.
  5. Cliquez sur le bouton Requête ().

Gemini génère une image en fonction de votre description. Ce processus devrait prendre quelques secondes, mais peut être relativement plus lent en fonction de la capacité.

Python

Installer

pip install --upgrade google-genai

Pour en savoir plus, lisez la documentation de référence du SDK.

Définissez les variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai
from google.genai.types import GenerateContentConfig, Modality
from PIL import Image
from io import BytesIO

client = genai.Client()

response = client.models.generate_content(
    model="gemini-2.5-flash-image-preview",
    contents=("Generate an image of the Eiffel tower with fireworks in the background."),
    config=GenerateContentConfig(
        response_modalities=[Modality.TEXT, Modality.IMAGE],
        candidate_count=1,
        safety_settings=[
            {"method": "PROBABILITY"},
            {"category": "HARM_CATEGORY_DANGEROUS_CONTENT"},
            {"threshold": "BLOCK_MEDIUM_AND_ABOVE"},
        ],
    ),
)
for part in response.candidates[0].content.parts:
    if part.text:
        print(part.text)
    elif part.inline_data:
        image = Image.open(BytesIO((part.inline_data.data)))
        image.save("output_folder/example-image-eiffel-tower.png")
# Example response:
#   I will generate an image of the Eiffel Tower at night, with a vibrant display of
#   colorful fireworks exploding in the dark sky behind it. The tower will be
#   illuminated, standing tall as the focal point of the scene, with the bursts of
#   light from the fireworks creating a festive atmosphere.

Node.js

Installer

npm install @google/genai

Pour en savoir plus, lisez la documentation de référence du SDK.

Définissez les variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

const fs = require('fs');
const {GoogleGenAI, Modality} = require('@google/genai');

const GOOGLE_CLOUD_PROJECT = process.env.GOOGLE_CLOUD_PROJECT;
const GOOGLE_CLOUD_LOCATION =
  process.env.GOOGLE_CLOUD_LOCATION || 'us-central1';

async function generateContent(
  projectId = GOOGLE_CLOUD_PROJECT,
  location = GOOGLE_CLOUD_LOCATION
) {
  const ai = new GoogleGenAI({
    vertexai: true,
    project: projectId,
    location: location,
  });

  const response = await ai.models.generateContentStream({
    model: 'gemini-2.0-flash-exp',
    contents:
      'Generate an image of the Eiffel tower with fireworks in the background.',
    config: {
      responseModalities: [Modality.TEXT, Modality.IMAGE],
    },
  });

  const generatedFileNames = [];
  let imageIndex = 0;
  for await (const chunk of response) {
    const text = chunk.text;
    const data = chunk.data;
    if (text) {
      console.debug(text);
    } else if (data) {
      const fileName = `generate_content_streaming_image_${imageIndex++}.png`;
      console.debug(`Writing response image to file: ${fileName}.`);
      try {
        fs.writeFileSync(fileName, data);
        generatedFileNames.push(fileName);
      } catch (error) {
        console.error(`Failed to write image file ${fileName}:`, error);
      }
    }
  }

  return generatedFileNames;
}

REST

Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${API_ENDPOINT}:generateContent \
  -d '{
    "contents": {
      "role": "USER",
      "parts": { "text": "Create a tutorial explaining how to make a peanut butter and jelly sandwich in three easy steps."},
    },
    "generation_config": {
      "response_modalities": ["TEXT", "IMAGE"],
     },
     "safetySettings": {
      "method": "PROBABILITY",
      "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    },
  }' 2>/dev/null >response.json

Gemini génère une image en fonction de votre description. Ce processus devrait prendre quelques secondes, mais peut être relativement plus lent en fonction de la capacité.

Générer du texte entrecoupé d'images

La prévisualisation d'images Gemini 2.5 Flash peut générer des images entrelacées avec ses réponses textuelles. Par exemple, vous pouvez générer des images de chaque étape d'une recette générée pour accompagner le texte de cette étape, sans avoir à envoyer des requêtes distinctes au modèle pour ce faire.

Console

Pour générer des images entrecoupées de réponses textuelles :

  1. Ouvrez Vertex AI Studio > Créer une requête.
  2. Cliquez sur Changer de modèle, puis sélectionnez gemini-2.5-flash-image-preview dans le menu.
  3. Dans le panneau Sorties, sélectionnez Image et texte dans le menu déroulant.
  4. Dans la zone de texte Écrivez une requête, saisissez une description de l'image que vous souhaitez générer. Par exemple, "Crée un tutoriel expliquant comment faire un sandwich au beurre de cacahuète et à la confiture en trois étapes simples. Pour chaque étape, indique un titre avec le numéro de l'étape, une explication et génère également une image au format 1:1."
  5. Cliquez sur le bouton Requête ().

Gemini génère une réponse en fonction de votre description. Ce processus devrait prendre quelques secondes, mais peut être relativement plus lent en fonction de la capacité.

Python

Installer

pip install --upgrade google-genai

Pour en savoir plus, lisez la documentation de référence du SDK.

Définissez les variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai
from google.genai.types import GenerateContentConfig, Modality
from PIL import Image
from io import BytesIO

client = genai.Client()

response = client.models.generate_content(
    model="gemini-2.5-flash-image-preview",
    contents=(
        "Generate an illustrated recipe for a paella."
        "Create images to go alongside the text as you generate the recipe"
    ),
    config=GenerateContentConfig(response_modalities=[Modality.TEXT, Modality.IMAGE]),
)
with open("output_folder/paella-recipe.md", "w") as fp:
    for i, part in enumerate(response.candidates[0].content.parts):
        if part.text is not None:
            fp.write(part.text)
        elif part.inline_data is not None:
            image = Image.open(BytesIO((part.inline_data.data)))
            image.save(f"output_folder/example-image-{i+1}.png")
            fp.write(f"![image](example-image-{i+1}.png)")
# Example response:
#  A markdown page for a Paella recipe(`paella-recipe.md`) has been generated.
#   It includes detailed steps and several images illustrating the cooking process.

REST

Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${API_ENDPOINT}:generateContent \
  -d '{
    "contents": {
      "role": "USER",
      "parts": { "text": "Create a tutorial explaining how to make a peanut butter and jelly sandwich in three easy steps. For each step, provide a title with the number of the step, an explanation, and also generate an image, generate each image in a 1:1 aspect ratio."},
    },
    "generation_config": {
      "response_modalities": ["TEXT", "IMAGE"],
     },
     "safetySettings": {
      "method": "PROBABILITY",
      "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    },
  }' 2>/dev/null >response.json

Gemini génère une image en fonction de votre description. Ce processus devrait prendre quelques secondes, mais peut être relativement plus lent en fonction de la capacité.

Génération d'images en fonction de la localisation

L'aperçu d'image Gemini 2.5 Flash peut également inclure des informations sur votre position lorsque vous recevez des réponses textuelles ou des images. Par exemple, vous pouvez générer des images de types de lieux ou d'expériences qui tiennent compte de votre position actuelle sans avoir à la spécifier au modèle.

Console

Pour utiliser la génération d'images en fonction de la localisation :

  1. Ouvrez Vertex AI Studio > Créer une requête.
  2. Cliquez sur Changer de modèle, puis sélectionnez gemini-2.5-flash-image-preview dans le menu.
  3. Dans le panneau Sorties, sélectionnez Image et texte dans le menu déroulant.
  4. Dans la zone de texte Écrivez une requête, saisissez une description de l'image que vous souhaitez générer. Par exemple, "Génère une photo d'un petit-déjeuner typique."
  5. Cliquez sur le bouton Requête ().

Gemini génère une réponse en fonction de votre description. Ce processus devrait prendre quelques secondes, mais peut être relativement plus lent en fonction de la capacité.

Python

Installer

pip install --upgrade google-genai

Pour en savoir plus, lisez la documentation de référence du SDK.

Définissez les variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai
from google.genai.types import GenerateContentConfig, Modality
from PIL import Image
from io import BytesIO

client = genai.Client()

response = client.models.generate_content(
    model="gemini-2.5-flash-image-preview",
    contents=("Generate a photo of a breakfast meal."),
    config=GenerateContentConfig(response_modalities=[Modality.TEXT, Modality.IMAGE]),
)
for part in response.candidates[0].content.parts:
    if part.text:
        print(part.text)
    elif part.inline_data:
        image = Image.open(BytesIO((part.inline_data.data)))
        image.save("output_folder/example-breakfast-meal.png")
# Example response:
#   Generates a photo of a vibrant and appetizing breakfast meal.
#   The scene will feature a white plate with golden-brown pancakes
#   stacked neatly, drizzled with rich maple syrup and ...

REST

Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${API_ENDPOINT}:generateContent \
  -d '{
    "contents": {
      "role": "USER",
      "parts": { "text": "Generate a photo of a typical breakfast."},
    },
    "generation_config": {
      "response_modalities": ["TEXT", "IMAGE"],
     },
     "safetySettings": {
      "method": "PROBABILITY",
      "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    },
  }' 2>/dev/null >response.json

Gemini génère une image en fonction de votre description. Ce processus devrait prendre quelques secondes, mais peut être relativement plus lent en fonction de la capacité.