AIFreeAPI Logo

GPT Image 2: почему size 1024x576 недопустим и как получить нужный файл

A
5 min readРуководства

Пропорция 16:9 верна, но пикселей недостаточно. Разбираем причину ошибки, допустимые размеры и получение ровно 1024×576 через API и локальное уменьшение.

Отказ размера изображения, генерация более крупного исходника и уменьшение до готового файла

Если прямой OpenAI API отклоняет size: "1024x576" для gpt-image-2, причина в общей площади изображения: 589 824 пикселя при минимуме 655 360. Соотношение сторон 16:9 и кратность обеих сторон 16 здесь соблюдены, но этого недостаточно.

Чтобы получить файл ровно 1024×576, задайте при генерации size: "1280x720", а затем уменьшите результат до нужного размера. Пропорция останется 16:9, поэтому обрезать изображение или растягивать его по одной оси не придётся. Ниже — обоснование, пример запроса и проверка готового файла.

Правила сверены с документацией OpenAI 8 сентября 2026 года. Допустимость размеров рассчитана по этим правилам; платные вызовы API для проверки статьи не выполнялись.

Почему правильного соотношения сторон недостаточно

В документации GPT Image 2 размер задаётся в пикселях и должен одновременно удовлетворять нескольким условиям:

  • ширина и высота — положительные числа, кратные 16;
  • каждая сторона — не больше 3840 пикселей;
  • отношение длинной стороны к короткой — не больше 3:1;
  • общая площадь — от 655 360 до 8 294 400 пикселей включительно.

Для 1024×576 расчёт выглядит так:

text
1024 / 16 = 64 — целое число 576 / 16 = 36 — целое число 1024 / 576 = 16 / 9 — допустимая пропорция 1024 × 576 = 589824 — меньше 655360

Не хватает 65 536 пикселей. Именно последнее условие делает этот размер недопустимым. Просьба «нарисуй в 16:9» в тексте запроса не исправит числовое значение size: сначала нужно изменить параметр запроса.

Эти ограничения относятся к изображению, которое генерирует модель. Они не запрещают хранить, публиковать или передавать дальше файл 1024×576, полученный обычным уменьшением.

Схема площади изображения и минимального количества пикселей
Схема площади изображения и минимального количества пикселей

Какой размер поставить вместо 1024×576

Если конечному изображению нужна пропорция 16:9, удобная замена — 1280×720. Это минимальный размер с точным соотношением 16:9, который соответствует перечисленным ограничениям GPT Image 2.

Размер при генерацииПикселейСоотношение сторонСоответствует правилам?
1024×576589 82416:9Нет: площадь ниже минимума
1024×640655 3608:5Да, но это другая пропорция
1280×720921 60016:9Да
1536×8641 327 10416:9Да
1920×10802 073 60016:9Нет: 1080 не кратно 16
2048×11522 359 29616:9Да

Таблица показывает соответствие документированным ограничениям прямого OpenAI API. У посредника могут быть собственные доступные размеры и схема параметров.

Почему минимум именно 1280×720? При точном соотношении 16:9 стороны можно записать как 16t и 9t. Чтобы обе стороны делились на 16, число t тоже должно делиться на 16. Значит, допустимые кандидаты имеют вид 256k × 144k. При k = 4 получается отвергнутый размер 1024×576, а следующий шаг, k = 5, даёт 1280×720 и уже проходит ограничение площади.

Выбирайте 1536×864 или 2048×1152, если вам также нужен исходник большего размера. Для одной лишь задачи «получить файл 1024×576» дополнительное увеличение необязательно. Из арифметического минимума не следует, что он всегда будет самым дешёвым или быстрым вариантом.

Не подменяйте 1024×576 размером 1024×640, если важна исходная композиция. При последующем приведении к 16:9 такой файл придётся обрезать либо дополнять полями. Если просто сжать высоту с 640 до 576, объекты станут ниже и шире на вид.

Запрос к OpenAI и получение файла 1024×576

Для прямого API используется строка с размерами через латинскую x: "1280x720". Значения "16:9" и "1280×720" с типографским знаком умножения не заменяют эту запись.

Следующий пример запрашивает PNG через Images API и сохраняет JSON-ответ в файл. Ключ должен быть заранее доступен в переменной окружения OPENAI_API_KEY. Запуск команды отправит реальный запрос на генерацию с оплатой по условиям вашего аккаунта.

bash
curl --fail-with-body https://api.openai.com/v1/images/generations \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-image-2", "prompt": "Горный пейзаж на рассвете, широкая композиция, без текста", "size": "1280x720", "quality": "medium", "output_format": "png" }' \ -o response.json

Если команда завершилась с ошибкой, сначала прочитайте response.json: там может быть объяснение отказа. Не переходите к декодированию, пока ответ не содержит изображение. Подробности подключения и других операций собраны в руководстве по API GPT Image 2.

Согласно описанию формата ответа OpenAI, Images API возвращает данные изображения в base64. Для следующего шага установите Pillow в своё Python-окружение:

bash
python -m pip install Pillow

Сохраните код как resize_image.py рядом с response.json и выполните python resize_image.py:

python
import base64 import io import json from pathlib import Path from PIL import Image response = json.loads(Path("response.json").read_text()) if "error" in response: raise RuntimeError(response["error"]) data = response.get("data") or [] if not data or not data[0].get("b64_json"): raise RuntimeError("В ответе нет data[0].b64_json") raw = base64.b64decode(data[0]["b64_json"], validate=True) Path("generated.png").write_bytes(raw) with Image.open(io.BytesIO(raw)) as source: width, height = source.size if width * 9 != height * 16: raise ValueError( f"Получен размер {width}x{height}, пропорция не 16:9" ) if width < 1024 or height < 576: raise ValueError("Исходник меньше нужного конечного размера") result = source.resize((1024, 576), Image.Resampling.LANCZOS) result.save("final-1024x576.png") with Image.open("final-1024x576.png") as saved: if saved.size != (1024, 576): raise RuntimeError(f"Неверный размер файла: {saved.size}") print(f"Готово: {saved.width}x{saved.height}, {saved.format}")

Скрипт оставляет исходник и отдельно записывает конечный PNG. Проверка пропорции перед уменьшением нужна на случай, если клиент или посредник вернул изображение другого размера: скрипт остановится, а не исказит его молча. Повторное открытие готового файла подтверждает его фактические размеры, а не только числа в имени.

Для исходника 1280×720 коэффициент уменьшения одинаков по обеим осям — 0,8. Содержимое по краям сохраняется целиком. Локальное изменение размера не требует нового вызова модели.

Если ошибка остаётся после замены размера

Начните с фактического HTTP-запроса. Значение в поле интерфейса и то, что приложение отправило серверу, могут различаться. Для диагностики достаточно адреса запроса, идентификатора модели, значения size, HTTP-статуса и текста ошибки. При передаче этих данных уберите ключ, заголовок Authorization и личное содержимое запроса.

Проверьте адрес сервера. Пример выше относится к api.openai.com/v1/images/generations. Другой домен может означать другой контракт API, даже если в названии модели есть GPT Image 2.

Например, в русской документации APIMart используется модель gpt-image-2-official: поле size задаёт соотношение сторон, в том числе 16:9, отдельно передаётся resolution, а обработка строится вокруг task_id. В таблице провайдера для 16:9 указан размер от 1536×864. Это объясняет, почему инструкция с size: "16:9" может быть верной для APIMart и неподходящей для прямого OpenAI API. Переносить поля между этими примерами без проверки документации нельзя.

Различия параметров изображения в запросах OpenAI API и APIMart
Различия параметров изображения в запросах OpenAI API и APIMart

Проверьте, что приложение отправляет именно gpt-image-2. Список размеров в старом SDK, форме или расширении может быть рассчитан на другую модель. Если интерфейс принимает только несколько фиксированных вариантов, изучите его поддержку произвольного size и правила используемого провайдера.

Сопоставьте ошибку с новым запросом. Если сервер снова упоминает 1024×576, хотя вы выбрали 1280×720, проверьте сохранение настройки, шаблон запроса и возможное переопределение параметра. Если ошибка уже касается авторизации, доступа к модели или другого поля, подбор размеров её не устранит.

При отклонении 1280×720 конкретным посредником выберите документированный у него вариант 16:9, например 1536×864, если он указан среди поддерживаемых. Затем выполните то же локальное уменьшение. Правила OpenAI сами по себе не доказывают поддержку произвольных размеров у стороннего сервиса.

Можно ли обойти уменьшение через auto или текст запроса?

size: "auto" позволяет модели выбрать размер по запросу, но не гарантирует файл ровно 1024×576. Для загрузчика с жёсткими требованиями к ширине и высоте надёжнее явно запросить допустимый исходник 16:9 и проверить конечный файл после обработки.

Текст запроса полезен для композиции: можно попросить широкую сцену, свободное место под заголовок или расположение важных объектов вдали от краёв. Однако он не отменяет ограничения числового size и не заменяет проверку размеров изображения.

Для этой ошибки достаточно разделить два шага: генерация в допустимом размере 1280×720 и сохранение результата в требуемом размере 1024×576. Если первый шаг отклоняется, проверяйте запрос и правила провайдера; если готовый файл не принимается целевой системой, проверяйте уже его реальные размеры и формат.