API Gemini поддерживает создание изображений с помощью Gemini 2.0 Flash Experimental и Imagen 3 . Это руководство поможет вам начать работу с обеими моделями.
Создание изображений с помощью Gemini
Gemini 2.0 Flash Experimental поддерживает возможность вывода текста и встроенных изображений. Это позволяет вам использовать Gemini для редактирования изображений в диалоговом режиме или создания результатов с переплетенным текстом (например, создание сообщения в блоге с текстом и изображениями за один ход). Все сгенерированные изображения содержат водяной знак SynthID , а изображения в Google AI Studio также включают видимый водяной знак.
В следующем примере показано, как использовать Gemini 2.0 для генерации вывода текста и изображений:
Питон
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-exp-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 } from "@google/genai";
import * as fs from "node:fs";
async function main() {
const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });
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-exp-image-generation",
contents: contents,
config: {
responseModalities: ["Text", "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();
ОТДЫХ
curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-exp-image-generation:generateContent?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

В зависимости от подсказки и контекста Gemini будет генерировать контент в разных режимах (текст в изображение, текст в изображение и текст и т. д.). Вот несколько примеров:
- Текст в изображение
- Пример запроса: «Создать изображение Эйфелевой башни с фейерверком на заднем плане».
- Текст в изображение(я) и текст (чередующийся)
- Пример приглашения: «Создать иллюстрированный рецепт паэльи».
- Изображения и текст в изображения и текст (чередующиеся)
- Пример подсказки: (с изображением меблированной комнаты) «Дива каких еще цветов подойдут в моем пространстве? Можете ли вы обновить изображение?»
- Редактирование изображений (текст и изображение в изображение)
- Пример подсказки: «Отредактируйте это изображение, чтобы оно выглядело как мультфильм».
- Пример подсказки: [изображение кота] + [изображение подушки] + «Вышейте крестиком моего кота на этой подушке».
- Многооборотное редактирование изображений (чат)
- Пример подсказки: [загрузите изображение синего автомобиля.] «Превратите эту машину в кабриолет». «Теперь измените цвет на желтый».
Редактирование изображений с помощью Gemini
Чтобы выполнить редактирование изображения, добавьте изображение в качестве входных данных. В следующем примере демонстрируется загрузка изображений в кодировке Base64. Если вы хотите получить несколько изображений и более крупные полезные данные, проверьте раздел ввода изображений .
Питон
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-exp-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 } from "@google/genai";
import * as fs from "node:fs";
async function main() {
const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });
// 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-exp-image-generation",
contents: contents,
config: {
responseModalities: ["Text", "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();
ОТДЫХ
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-exp-image-generation:generateContent?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
Ограничения
- Для достижения наилучшей производительности используйте следующие языки: EN, es-MX, ja-JP, zh-CN, hi-IN.
- Генерация изображений не поддерживает аудио- и видеовходы.
- Генерация изображения не всегда может срабатывать:
- Модель может выводить только текст. Попробуйте явно запросить выходные данные изображения (например, «создать изображение», «предоставить изображения по мере продвижения», «обновить изображение»).
- Модель может перестать генерировать на полпути. Попробуйте еще раз или попробуйте другое приглашение.
- При создании текста для изображения Gemini работает лучше всего, если вы сначала генерируете текст, а затем запрашиваете изображение с текстом.
Выберите модель
Какую модель следует использовать для создания изображений? Это зависит от вашего варианта использования.
Gemini 2.0 лучше всего подходит для создания контекстно-релевантных изображений, объединения текста и изображений, включения мировых знаний и рассуждений об изображениях. Вы можете использовать его для создания точных, контекстуально релевантных визуальных эффектов, встроенных в длинные текстовые последовательности. Вы также можете редактировать изображения в диалоговом режиме, используя естественный язык, сохраняя при этом контекст на протяжении всего разговора.
Если качество изображения является вашим главным приоритетом, то Imagen 3 — лучший выбор. Imagen 3 отличается фотореализмом, художественными деталями и конкретными художественными стилями, такими как импрессионизм или аниме. Imagen 3 также является хорошим выбором для специализированных задач редактирования изображений, таких как обновление фона продукта, масштабирование изображений и придание фирменного стиля и стиля визуальным элементам. Вы можете использовать Imagen 3 для создания логотипов или дизайна другой фирменной продукции.
Создавайте изображения с помощью Imagen 3
Gemini API обеспечивает доступ к Imagen 3 , модели Google для преобразования текста в изображение высочайшего качества, обладающей рядом новых и улучшенных возможностей. Imagen 3 может делать следующее:
- Создавайте изображения с большей детализацией, более насыщенным освещением и меньшим количеством отвлекающих артефактов, чем предыдущие модели.
- Понимать подсказки, написанные на естественном языке
- Создавайте изображения в широком диапазоне форматов и стилей.
- Рендеринг текста более эффективно, чем в предыдущих моделях
Питон
from google import genai
from google.genai import types
from PIL import Image
from io import BytesIO
client = genai.Client(api_key='GEMINI_API_KEY')
response = client.models.generate_images(
model='imagen-3.0-generate-002',
prompt='Robot holding a red skateboard',
config=types.GenerateImagesConfig(
number_of_images= 4,
)
)
for generated_image in response.generated_images:
image = Image.open(BytesIO(generated_image.image.image_bytes))
image.show()
JavaScript
import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";
async function main() {
const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });
const response = await ai.models.generateImages({
model: 'imagen-3.0-generate-002',
prompt: 'Robot holding a red skateboard',
config: {
numberOfImages: 4,
},
});
let idx = 1;
for (const generatedImage of response.generatedImages) {
let imgBytes = generatedImage.image.imageBytes;
const buffer = Buffer.from(imgBytes, "base64");
fs.writeFileSync(`imagen-${idx}.png`, buffer);
idx++;
}
}
main();
ОТДЫХ
curl -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/imagen-3.0-generate-002:predict?key=GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"instances": [
{
"prompt": "Robot holding a red skateboard"
}
],
"parameters": {
"sampleCount": 4
}
}'

В настоящее время Imagen поддерживает только запросы на английском языке и следующие параметры:
Параметры модели изображения
(Соглашения об именах зависят от языка программирования.)
-
numberOfImages
: количество генерируемых изображений от 1 до 4 (включительно). По умолчанию — 4. -
aspectRatio
: изменяет соотношение сторон сгенерированного изображения. Поддерживаемые значения:"1:1"
,"3:4"
,"4:3"
,"9:16"
и"16:9"
. По умолчанию установлено"1:1"
. -
personGeneration
: разрешить модели генерировать изображения людей. Поддерживаются следующие значения:-
"DONT_ALLOW"
: блокировать создание изображений людей. -
"ALLOW_ADULT"
: создавать изображения взрослых, но не детей. Это значение по умолчанию.
-
Что дальше
- Дополнительные сведения о написании приглашений для Imagen см. в руководстве по приглашениям Imagen .
- Дополнительные сведения о моделях Gemini 2.0 см. в разделах Модели Gemini и Экспериментальные модели .