Gemini può generare ed elaborare immagini in modo conversazionale. Puoi fornire a Gemini prompt con testo, immagini o una combinazione di entrambi per eseguire varie attività relative alle immagini, come la generazione e la modifica. Tutte le immagini generate includono una filigrana SynthID.
La generazione di immagini potrebbe non essere disponibile in tutte le regioni e in tutti i paesi. Per saperne di più, consulta la nostra pagina Modelli Gemini.
Generazione di immagini (da testo a immagine)
Il seguente codice mostra come generare un'immagine in base a un prompt descrittivo. Devi includere responseModalities
: ["TEXT", "IMAGE"]
nella
configurazione. L'output solo immagine non è supportato con questi modelli.
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();
Vai
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

Modifica delle immagini (da testo e immagine a immagine)
Per eseguire la modifica delle immagini, aggiungi un'immagine come input. L'esempio seguente mostra il caricamento di immagini con codifica base64. Per più immagini e payload più grandi, controlla la sezione Input immagine.
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();
Vai
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
Altre modalità di generazione di immagini
Gemini supporta altre modalità di interazione con le immagini in base alla struttura del prompt e al contesto, tra cui:
- Testo in immagini e testo (interleaved): genera immagini con testo correlato.
- Prompt di esempio: "Genera una ricetta illustrata per una paella".
- Immagini e testo per immagini e testo (interleaved): utilizza immagini e testo di input per creare nuovi testi e immagini correlati.
- Prompt di esempio: (con un'immagine di una stanza arredata) "Quali altri divani colorati si abbinerebbero al mio spazio? Puoi aggiornare l'immagine?"
- Modifica di immagini in più passaggi (chat): continua a generare / modificare immagini in modo conversazionale.
- Prompt di esempio: [carica un'immagine di un'auto blu]. , "Trasforma questa auto in una cabriolet", "Ora cambia il colore in giallo."
Limitazioni
- Per ottenere prestazioni ottimali, utilizza le seguenti lingue: EN, es-MX, ja-JP, zh-CN, hi-IN.
- La generazione di immagini non supporta input audio o video.
- La generazione di immagini potrebbe non essere sempre attivata:
- Il modello potrebbe restituire solo testo. Prova a chiedere esplicitamente output di immagini (ad es. "genera un'immagine", "fornisci immagini man mano", "aggiorna l'immagine").
- Il modello potrebbe interrompere la generazione a metà. Riprova o prova un prompt diverso.
- Quando genera testo per un'immagine, Gemini funziona meglio se prima genera il testo e poi chiede un'immagine con il testo.
- La generazione di immagini non è disponibile in alcune regioni/paesi. Per saperne di più, consulta la sezione Modelli.
Quando utilizzare Imagen
Oltre a utilizzare le funzionalità di generazione di immagini integrate di Gemini, puoi accedere anche a Imagen, il nostro modello di generazione di immagini specializzato, tramite l'API Gemini.
Scegli Gemini quando:
- Hai bisogno di immagini pertinenti al contesto che sfruttino la conoscenza e il ragionamento del mondo.
- È importante combinare perfettamente testo e immagini.
- Vuoi immagini accurate incorporate in lunghe sequenze di testo.
- Vuoi modificare le immagini in modo conversazionale mantenendo il contesto.
Scegli Imagen quando:
- Qualità dell'immagine, fotorealismo, dettagli artistici o stili specifici (ad es. impressionismo, anime) sono le priorità principali.
- Eseguire attività di modifica specializzate come aggiornamenti dello sfondo del prodotto o miglioramento della dimensione delle immagini.
- Incorporare il branding, lo stile o generare loghi e design di prodotti.
Imagen 4 dovrebbe essere il modello di riferimento per iniziare a generare immagini con Imagen. Scegli Imagen 4 Ultra per casi d'uso avanzati o quando hai bisogno della migliore qualità delle immagini. Tieni presente che Imagen 4 Ultra può generare solo un'immagine alla volta.
Passaggi successivi
- Consulta la guida di Veo per scoprire come generare video con l'API Gemini.
- Per scoprire di più sui modelli Gemini, consulta Modelli Gemini e Modelli sperimentali.