Две совершенно разные вещи
При вызове image model есть два «разрешения». Это два независимых поля в запросе — не путайте их:
Одной фразой: сжатие влияет на «изображение, которое вы подаете на вход»; параметр разрешения управляет «изображением, которое модель выдает на выход». У каждого — свои задачи.
Сжатие качества или сжатие размеров? Что именно сжимает «компрессия»
«Compression» часто используют в широком смысле, но у изображения есть два независимых вида «размера», и у каждого свой рычаг сжатия:
Эти два параметра могут сильно расходиться. Реальный пример (эмпирические значения; зависят от кодирования):
- Фотография с iPhone 16 Pro имеет размер 4284×5712 (около 24 мегапикселей — очень много), но файл всего 4.6 MB, потому что система уже применила эффективное кодирование с потерями при сохранении;
- Фотография с тем же количеством пикселей, экспортированная в высоком качестве, может достигать 30 MB.
- Размеры в пикселях задают верхнюю границу того, сколько информации модель может «увидеть», и стоимость декодирования/понимания;
- Размер файла влияет на стоимость передачи: примерно 33% раздувание из-за Base64, время загрузки и ограничение в 20 MB на один файл относятся именно к байтам.
Разрешение вывода задается параметром размера, а не prompt
Это самое распространенное заблуждение, поэтому сначала вывод: Разные модели используют разные параметры размера. Наиболее распространенные:Пример: gemini-3-pro-image
Он управляет разрешением вывода через уровеньimageSize — 1K / 2K / 4K (по умолчанию 1K, если не указан) — а aspectRatio задает соотношение сторон кадра:
imageSize — это поле, которое фактически определяет разрешение вывода. Каждая комбинация соотношения сторон и уровня сопоставляется с фиксированными размерами в пикселях — например, 1:1 на 1K/2K/4K это примерно 1024×1024 / 2048×2048 / 4096×4096, а 16:9 — примерно 1376×768 / 2752×1536 / 5504×3072.
Серия GPT image использует строку размера в пикселях
Некоторые модели (отдельные типы с адаптивным выводом) не принимают параметр размера — разрешение вывода определяется самой моделью (обычно около 1–1.5K). Для таких моделей 4K нельзя принудительно задать через параметры, не говоря уже о prompt. Проверьте документацию/описание возможностей каждой модели.
Ухудшает ли сжатие входного изображения резкость результата? В основном нет
Вывод: в подавляющем большинстве сценариев разумное сжатие входных референсных изображений почти не влияет на резкость результата. Три причины:-
Результат пересоздаётся, а не является увеличенной версией вашего изображения.
Модель создаёт новое изображение в заданном вами размере. Разрешение результата зависит только отimageSize/size, а не от того, сколько пикселей было у входного изображения. Неважно, было ли входное изображение 3000px или сжато до 2000px: если вы выберете 4K, вы получите 4K. -
Поле сжатия входа и поле размера результата независимы.
Сжатие меняет только объём/количество пикселей в поле “image data” в запросе — оно никогда не затрагивает поле параметра размера. Эти два поля в запросе не связаны. -
Рекомендуемое сжатие мягкое — значительно выше того, что модели нужно, чтобы “видеть” изображение.
На практике сжатие референсного изображения до длинной стороны примерно 2048px при JPEG quality около 0.9 более чем достаточно, чтобы модель поняла композицию, цвета, стиль и детали объекта — эти модели всё равно внутренне уменьшают входные изображения до умеренного разрешения перед кодированием.
Чтобы быть строгими: пограничный случай
В задачах image-to-image / тонкой правки (когда нужно строго сохранить мелкие текстуры или небольшой текст в конкретной области входа) слишком агрессивное сжатие входа (например, уменьшение длинной стороны до нескольких сотен пикселей или quality ниже 0.5) теоретически может привести к потере части деталей и косвенно повлиять на то, насколько точно правка сохраняет оригинал. Но если вы придерживаетесь мягкого стандарта вроде “длинная сторона ≤ 2048px, quality ≥ 0.85”, этот эффект в реальной работе незначителен. Более точная формулировка:Разумное сжатие (длинная сторона 2048px, quality 0.9) → без заметного влияния на резкость результата;
только крайнее чрезмерное сжатие может вызвать потерю деталей в сценариях тонкой правки.
Практические настройки сжатия входных изображений
Если вы сжимаете входные изображения перед вызовом, мы рекомендуем такие мягкие стандарты — это позволит экономить трафик без потери полезной информации:
Адаптивный подход для нескольких изображений:
per-image target = clamp(total budget ÷ image count, 0.3MB, 1.5MB). Чем больше изображений, тем меньше доля на каждое изображение, при этом общий размер остается под контролем; изображения, которые уже укладываются в целевой диапазон, проходят без изменений.
Сгенерированные изображения, поступающие в последующий workflow: обрабатывайте их тоже
Изображения, создаваемые API, часто больше, чем вы ожидаете. Возьмем 4K-уровень Nano Banana Pro в качестве примера (эмпирические значения; зависят от кодирования в каждом канале):
Один и тот же 4K-уровень, но разные каналы кодируют по-разному — размер файла может отличаться в 2 раза.
Если сгенерированное изображение становится входом следующего шага (повторное редактирование, объединение нескольких изображений, reference image), сначала сжимайте его по тому же стандарту, что и входные изображения (длинная сторона 2048px, quality 0.9). Иначе изображение размером 18 MB после накладных расходов Base64 примерно на ~33% раздуется до около 24 MB — что легко упирается в лимиты на тело запроса/один файл и замедляет загрузку. См. Руководство разработчика Nano Banana Series для подробностей о раздувании Base64.
Если сгенерированное изображение нужно только для отображения/архивации и никогда не возвращается в модель, рассмотрите Nano Banana OSS Group: изображения возвращаются как URL, что позволяет избежать накладных расходов на передачу Base64.
Дополнительные рекомендации по обработке изображений
Помимо сжатия, перед загрузкой в сценариях вызова API стоит учитывать следующее:- Встраивайте ориентацию EXIF в пиксели: фотографии с телефона часто хранят сведения о повороте в теге EXIF Orientation, а не в самих пикселях. Некоторые конвейеры обработки игнорируют этот тег, поэтому модель видит изображение, повернутое набок или вверх ногами. Примените поворот к пикселям перед загрузкой (большинство библиотек сжатия делают это автоматически при повторном кодировании).
- Удаляйте приватные метаданные EXIF перед загрузкой: оригинальные фотографии часто содержат координаты GPS, модель устройства и время съемки в EXIF. Удаляйте метаданные перед отправкой пользовательских фотографий в сторонний API — повторное кодирование обычно делает это как побочный эффект, но следите за порядком: сначала примените ориентацию, затем удалите метаданные.
- Совместимость форматов: формат HEIC/HEIF по умолчанию на iPhone не поддерживается большинством image API — сначала конвертируйте в JPEG/PNG; используйте PNG/WebP для прозрачности; у анимированных GIF обычно считывается только первый кадр.
- Конвертируйте цветовое пространство в sRGB: фотографии устройств Apple часто используют Display P3. Конвейеры, которые игнорируют цветовой профиль, будут давать сдвиги цветов — перед загрузкой конвертируйте в sRGB.
- Выбирайте способ передачи под сценарий: на входной стороне Base64 — самый надежный вариант; загрузка по URL (
fileUri) требует строгих условий CDN — см. Руководство разработчика серии Nano Banana, чтобы оценить компромиссы. На выходной стороне используйте Nano Banana OSS группу, чтобы получать URL вместо Base64. - Выбирайте нужный вам уровень выходных данных: не запрашивайте 4K, если результат этого не требует — генерация будет медленнее, файлы больше, а последующая передача и обработка дороже. Сначала итеративно работайте в 1K/2K и переходите к 4K только для финального рендера.
- Своевременно сохраняйте URL-выходы: URL изображений, возвращаемые API, истекают. Переносите их в свое хранилище сразу после получения — никогда не воспринимайте временный URL как постоянный ресурс.
Краткая справка
- Выходное разрешение = параметр размера (
imageSize/size/aspect_ratio), а не текст в prompt. Нужен 4K? Укажите параметр — не пишите это в prompt. gemini-3-pro-imageиспользуетimageSizeс уровнями 1K / 2K / 4K (по умолчанию 1K); серия изображений GPT использует строку пикселейsize.- Сжатие входных данных и выходное разрешение не связаны — это два независимых поля в запросе.
- Размеры в пикселях и размер файла — это разные вещи: сжатие = сначала изменить размер (длинная сторона 2048px), затем перекодировать (quality 0.9); используйте размер файла как триггер (только выше 1.5MB).
- Разумное сжатие входных данных (длинная сторона 2048px, quality 0.9) не влияет на четкость выхода; только экстремальное чрезмерное сжатие может привести к потере деталей при тонком редактировании.
- Рекомендуемое сжатие входных данных: сжимайте только выше 1.5MB, длинная сторона ≤2048px, quality 0.9, сохраняйте исходный формат, общий размер нескольких изображений ≤6MB, один файл ≤20MB, при сбое используйте исходный файл.
- Сжимайте сгенерированные изображения перед передачей их в downstream workflows: изображение Nano Banana Pro 4K занимает примерно 9–18 MB на изображение (зависит от канала) — если отправлять его как есть, лимиты легко будут превышены.
- Обрабатывайте EXIF и формат перед загрузкой: встраивайте ориентацию в пиксели, удаляйте GPS и другие метаданные, связанные с конфиденциальностью, преобразуйте HEIC в JPEG, преобразуйте Display P3 в sRGB.