Nano Banana: как задать формат 16:9 — укажите значение aspect_ratio в объекте response_format Gemini API, это параметр вызова. В приложении Gemini формат задают промптом и референс-изображением. Ниже — рабочие вызовы, таблица форматов и разбор ошибок.
16:9 — это значение aspect_ratio в response_format
В документации Gemini API на ai.google.dev поля вывода описаны так: формат и размер картинки управляются через aspect_ratio и image_size внутри response_format, когда type установлен в "image". Строка "16:9" — одно из допустимых значений этого поля. Отдельного метода «сделать широкий кадр» в API нет: вы передаёте параметр в том же запросе, что и промпт.
Практический вывод для читателя: искать в интерфейсе или в коде функцию с названием вроде setWidescreen бессмысленно. Формат живёт в структуре ответа, рядом с типом и MIME-типом. Если вы пишете обёртку над API, aspect_ratio — обычное строковое поле, которое можно вынести в переменную окружения или в конфиг задачи.
Полезно помнить о двух соседних полях. type: "image" говорит, что вы ждёте картинку; mime_type задаёт формат файла (image/png, image/jpeg). image_size отвечает за разрешение и принимает значения вроде "1K", "2K", "4K" — заглавная K обязательна, строчные варианты отклоняются. Эти три поля собираются в один объект, и aspect_ratio в нём — не украшение, а рабочий переключатель пропорций.
Если поле не передать, модель повторит размер входного изображения, а без него выдаст квадратный кадр. Поэтому формат стоит указывать в каждом запросе.
Вызов с aspect_ratio «16:9» и image_size
Ниже — пример на Python, собранный по документации Google: промпт про коралловый риф взят из её примеров, а поле image_size со значением "2K" добавлено по образцу других вызовов той же страницы. Ключ API берётся из окружения, в коде он не хранится.
import os
import base64
from google import genai
client = genai.Client(api_key=os.environ["GEMINI_API_KEY"])
prompt = (
"A photorealistic wide-angle shot of a vibrant coral reef teeming with "
"tropical fish. Crystal-clear turquoise water with sunbeams filtering down "
"from the surface, illuminating a sea turtle gliding gracefully over the "
"coral. Shot from a low perspective with a wide-angle lens. Aspect ratio 16:9."
)
interaction = client.interactions.create(
model="gemini-nano-banana-2.1",
input=prompt,
response_format={
"type": "image",
"mime_type": "image/jpeg",
"aspect_ratio": "16:9",
"image_size": "2K",
},
)
with open("coral_reef.jpg", "wb") as f:
f.write(base64.b64decode(interaction.output_image.data))
Разбор по строкам. genai.Client читает ключ из переменной GEMINI_API_KEY — секрет не попадает в исходник и в логи. model называет конкретную модель серии. input — текст промпта. response_format — тот самый объект с форматом и размером. Результат лежит в interaction.output_image.data в base64, и его нужно декодировать перед записью в файл.
Тот же запрос через REST выглядит так:
curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-nano-banana-2.1",
"input": "A photorealistic wide-angle shot of a vibrant coral reef. Aspect ratio 16:9.",
"response_format": {
"type": "image",
"mime_type": "image/jpeg",
"aspect_ratio": "16:9",
"image_size": "2K"
}
}'
Здесь ключ тоже приходит из переменной окружения $GEMINI_API_KEY. Если вы запускаете curl в общем терминале, следите, чтобы переменная не выводилась в историю команд и в логи CI.
Таблица форматов и разрешений по моделям
Документация Google приводит отдельные таблицы для каждой модели. Ниже — фрагмент по 16:9 и соседним широким форматам; полный список значений шире.
| Модель | Формат | 1K | 2K | 4K |
|---|---|---|---|---|
| Nano Banana 2.1 | 16:9 | 1376×768 | 2752×1536 | 5504×3072 |
| Nano Banana 2.1 | 21:9 | 1584×672 | 3168×1344 | 6336×2688 |
| Nano Banana 2.1 | 1:1 | 1024×1024 | 2048×2048 | 4096×4096 |
| 3.1 Flash Image | 16:9 | 1376×768 | 2752×1536 | 5504×3072 |
| 3.1 Pro Image | 16:9 | 1376×768 | 2752×1536 | 5504×3072 |
| Gemini 2.5 Flash Image | 16:9 | 1344×768 | — | — |
Что из таблицы важно на практике. Пиксели 16:9 у актуальных моделей — 1376×768 для 1K. Значение 1344×768 относится к более старой модели Gemini 2.5 Flash Image. Разрешение 0.5K (512px) доступно только у 3.1 Flash Image, кадр 16:9 в нём имеет размер 688×384. Набор форматов тоже различается: у 3.1 Flash Lite Image список из десяти значений, без 4:1, 1:4, 8:1 и 1:8. Планируя пачку обложек, сверяйтесь с таблицей для своей модели.
Приложение Gemini: путь Open sidebar → Images
В приложении Gemini генерация идёт через веб-интерфейс. Справка Google описывает порядок так: откройте gemini.google.com, слева нажмите «Open sidebar», выберите раздел Images, затем выберите шаблон или введите промпт. Модель выбирается настройкой Gemini: Flash или Pro дают Nano Banana 2, Flash-Lite — Nano Banana 2 Lite, а Nano Banana Pro доступен подписчикам с планом Google AI.
На формат кадра в приложении можно повлиять двумя способами, и ровно 16:9 ни один из них не гарантирует. Первый — словами в промпте: в примерах вендора встречается формулировка вида «Create a beautiful 3:2 wallpaper of this bird», то есть пропорция называется прямо в тексте запроса. Второй — референс-изображение: если приложить картинку нужной пропорции, модель ориентируется на неё. Отдельного переключателя соотношения сторон справка не описывает, поэтому рассчитывать на пункт меню не стоит.
Практический порядок для обложки 16:9 в приложении: подготовьте пустой или макетный кадр 16:9, загрузите его как референс, затем в промпте опишите сцену и явно назовите пропорцию. Так вы складываете оба доступных рычага. Проверьте результат по фактическим пикселям скачанного файла: приложение отдаёт превью в высоком разрешении, а скачивание доступно в 2K с планом Google AI и в 1K без него.
Правило размера: входное изображение или 1:1
В документации Google зафиксировано поведение по умолчанию: модель повторяет размер выходной картинки за размером входного изображения, а при его отсутствии генерирует квадрат 1:1. Это объясняет самую частую жалобу «просил широкий кадр, получил квадрат»: в запросе не было ни aspect_ratio, ни референса.
Отсюда два пути к 16:9. Первый — явный параметр aspect_ratio в response_format, он перекрывает поведение по умолчанию. Второй — референс нужной пропорции: если входная картинка широкая, выход унаследует её размер. Второй путь удобен в приложении Gemini, где параметра нет.
Пример обхода через референс описан в разборе на lilys.ai: там предлагают последним загрузить пустой кадр 16:9 и попросить модель перерисовать сцену. Это пример из стороннего руководства, и работает он не гарантированно. Вендор говорит именно о входном изображении, поэтому при нескольких референсах ориентируйтесь на тот, что задаёт нужную пропорцию, и проверяйте результат по пикселям.
Таблица: задача → формат → разрешение
| Задача | Формат | Разрешение | Комментарий |
|---|---|---|---|
| Обложка YouTube | 16:9 | 2K | 2752×1536 у актуальных моделей |
| Баннер на лендинг | 21:9 | 2K | 3168×1344, шире стандартного кадра |
| Пост в ленту | 1:1 | 1K | 1024×1024, поведение по умолчанию |
| Вертикальный сторис | 9:16 | 2K | 1536×2752 |
| Печать постера | 16:9 | 4K | 5504×3072, нужен явный image_size |
| Быстрый черновик | 16:9 | 1K | 1376×768, черновик перед финальным 2K или 4K. |
Логика выбора простая. Сначала определите пропорцию под площадку, затем разрешение под носитель: экран — 1K или 2K, печать — 4K. Формат и размер задаются в одном объекте response_format, так что менять их можно независимо. Для серии однотипных картинок вынесите оба значения в переменные и подставляйте в запрос.
Ошибки: 422 у провайдера и конфликт референса
Первая частая причина сбоя — значение вне списка. У сторонних провайдеров, которые проксируют модель, неподдерживаемый формат возвращает ошибку валидации, например 422. Это поведение конкретного провайдера: у Google список значений свой и зависит от модели. Если вы работаете через посредника, сверяйтесь с его документацией и не переносите его коды ошибок на официальный API.
Вторая причина — конфликт формата референса и запроса. Если вы приложили квадратное изображение, а в промпте просите широкий кадр, модель получает противоречивые указания. Результат непредсказуем: кадр может выйти квадратным или обрезанным. Держите пропорцию референса и текстовое указание согласованными.
Третья причина — наследование формата. В разборе на lilys.ai описан случай с двумя изображениями, где выход повторил пропорции последнего загруженного; это наблюдение автора руководства, правило Google сформулировано только для входного изображения. Проверяйте, какое изображение задаёт кадр, и при необходимости убирайте лишние.
Четвёртая — регистр в image_size. Строчная k отклоняется, нужна заглавная K. Пятая — ожидание точного числа картинок: модель не всегда выдаёт ровно столько изображений, сколько запрошено.
Частые вопросы
Как задать 16:9 в Nano Banana через API?
Передайте aspect_ratio: "16:9" в объекте response_format вместе с type: "image". При необходимости добавьте image_size со значением вроде "2K". Формат и размер идут в том же запросе, что и промпт. Отдельного метода для пропорций в API нет.
Почему выходит квадрат вместо широкого кадра?
По умолчанию модель повторяет размер входного изображения, а без него генерирует 1:1. Если вы не указали aspect_ratio и не приложили широкий референс, квадрат — ожидаемый результат. Добавьте параметр или референс нужной пропорции.
Можно ли задать формат в приложении Gemini?
Да, двумя способами: назвать пропорцию в промпте и приложить референс-изображение нужного формата. Путь к генерации — gemini.google.com, затем Open sidebar и раздел Images. Отдельного переключателя соотношения сторон справка не описывает.
Какое разрешение выбрать для 16:9?
Для экрана хватает 1K или 2K, для печати берите 4K. У актуальных моделей 16:9 в 1K — это 1376×768, в 2K — 2752×1536, в 4K — 5504×3072. Разрешение 0.5K доступно только у 3.1 Flash Image.
Что означает ошибка 422 при запросе формата?
Это код валидации у конкретного провайдера, который отклоняет значение вне своего списка. У Gemini API набор допустимых значений свой. Если вы работаете через посредника, сверяйтесь с его документацией и не переносите его коды ошибок на официальный API.
