Перейти к содержимому
Промпты

Прозрачный фон в gpt-image-2 работает в API — но с оговорками

Коротко

Что это меняет

Ассеты с настоящим альфа-каналом теперь приходят прямо из API, и отдельный шаг удаления фона в конвейере становится необязательным. Но функция в превью, а края и значения альфы пока приходят с сюрпризами

Что сделать

Сделайте один запрос с background="transparent" и проверьте альфа-канал результата скриптом на Pillow. Только после этого убирайте текущий шаг вырезания фона.

Прозрачный фон в gpt-image-2 работает в API — но с оговорками

Прозрачный фон в gpt-image-2 включается одним параметром — и это первое, что стоит проверить, если у вас в конвейере до сих пор живёт отдельный шаг удаления фона. OpenAI открыла превью 20 августа 2026 года, пока только в API.

Раньше на gpt-image-2 значение background="transparent" просто отклонялось. Теперь модель отдаёт PNG и WebP с настоящим альфа-каналом, и вырезание происходит на этапе генерации, а не постобработкой. Разница видна там, где обычные инструменты всегда мазали: стекло, тонкие волокна, распушённые края, волосы.

Как включить прозрачный фон и что вернёт API

Нужны два параметра. Первый — background="transparent". Второй — output_format="png" (значение по умолчанию) или output_format="webp". Формат jpeg прозрачность не поддерживает вообще, и запрос с ним смысла не имеет. Для PNG не передавайте output_compression: этот параметр работает только с WebP и JPEG.

result = client.images.generate(
    model="gpt-image-2",
    prompt=prompt,
    size="1024x1536",
    quality="high",
    background="transparent",
    output_format="png",
)

В справочнике API прямо сказано, что для gpt-image-2 и gpt-image-2-2026-04-21 эта поддержка находится в превью. То есть поведение может поменяться без предупреждения, и завязывать на него релиз без запасного пути пока рано.

Дальше всё зависит от вашей обработки. Возвращённые байты нужно сохранять как есть: любая конвертация RGBA в RGB молча выбрасывает альфа-канал, и вы получите картинку на чёрном или белом, не поняв, где потеряли прозрачность.

Почему промпт перебивает background=»transparent»

Самая частая причина непрозрачного результата — не параметр, а текст. В кукбуке по прозрачным ассетам OpenAI пишет об этом прямо: «Prompt instructions take priority over background="transparent". If the prompt describes a backdrop, scene, color, or other background, the model may generate that background instead of producing transparency».

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

При редактировании фразу «сохранить прозрачный фон» нужно повторять в каждом промпте. Иначе на втором-третьем шаге модель добросовестно подставит новую сцену — и формально будет права, вы её об обратном не просили.

Как понять, что прозрачность получилась не настоящей

Проверка занимает пару минут и делается кодом, а не глазами: на светлом фоне просмотрщика непрозрачный белый прямоугольник и честный вырез выглядят почти одинаково. Откройте файл в Pillow и посмотрите режим изображения и гистограмму альфа-канала. Если режим не RGBA или полностью прозрачных пикселей ноль — фон вам не вырезали.

from PIL import Image

with Image.open("asset.png") as image:
    print(image.mode)
    alpha = image.getchannel("A")
    total = image.width * image.height
    print(100 * alpha.histogram()[0] / total, "% полностью прозрачно")

На что смотреть после запуска:

  • режим файла отличается от RGBA — альфа-канала нет, дальше можно не проверять;
  • доля полностью прозрачных пикселей равна нулю при том, что вы просили вырез;
  • внутри объекта альфа не равна 255. На форуме OpenAI разработчик под ником _j сообщил 21 августа, что непрозрачные области возвращаются со значениями 252–254 на quality low и medium; это одиночный отчёт, OpenAI его не подтверждала, но проверить у себя стоит — при композитинге на контрастный фон такая «почти непрозрачность» просвечивает;
  • по контуру виден тонкий сероватый ореол на светлой подложке — тот же отчёт описывает краевую засветку, которую приходится подчищать расширением альфы;
  • после шага редактирования фон вернулся: в промпте правки не было требования сохранить прозрачность.

Что это меняет в конвейере

OpenAI утверждает, что запечённая на генерации альфа даёт лучший результат, чем классическое удаление фона, особенно на прозрачном стекле и тонких волокнах. По примерам кукбука — четыре флакона, диффузор с рассыпающимися метёлками пампасной травы — это похоже на правду, но своих замеров качества краёв OpenAI не приводит, так что на своих ассетах придётся сравнивать самостоятельно.

Второй момент, о котором в гайде не пишут. Все изображения из API несут провенанс-сигналы: метаданные C2PA и водяной знак SynthID. Если вы вкладываете сгенерированный прозрачный элемент в собственную иллюстрацию, этот сигнал уезжает вместе с ним и остаётся в финальном файле. Для стикеров и иконок это обычно неважно, для клиентских макетов — вопрос, который лучше закрыть до сдачи.

Третий — деньги. Кукбук по прозрачным ассетам во всех четырёх сценариях ставит quality="high", а это самый дорогой режим. Прежде чем гнать в нём пакет из сотни иконок, полезно понимать, как считается цена генерации в gpt-image-2 и почему выбор размера влияет на счёт сильнее, чем кажется.

Что сделать сейчас

  • Прогоните один тестовый запрос с background="transparent" и output_format="png" и проверьте результат скриптом выше — до того, как выкидывать текущий шаг удаления фона.
  • Вычистите из промптов всё, что описывает фон, сцену, подложку и тени, и добавьте явное требование изолированного объекта на полностью прозрачном фоне.
  • Добавьте в постобработку нормализацию альфы: значения выше порога приводите к 255, иначе композитинг на тёмный фон выдаст просвет.
  • Проверьте, что вся цепочка сохранения работает с RGBA и нигде не конвертирует изображение в RGB.
  • В каждом промпте редактирования повторяйте требование сохранить прозрачный фон.
  • Если ассет уходит клиенту, заранее решите вопрос с метаданными C2PA и SynthID.

И держите в голове статус превью: перед тем как ставить прозрачность в критичный путь, стоит перечитать рабочие шаблоны промптов для gpt-image-2 и оставить себе откат на прежний способ вырезания.

Источники