Прозрачный фон в 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 и оставить себе откат на прежний способ вырезания.
Источники
- OpenAI Cookbook — Transparent Image Assets for Campaigns and Presentations
- OpenAI Cookbook — GPT Image Generation Models Prompting Guide
- OpenAI API Reference — Images, параметр background
- OpenAI Developer Community — анонс превью и отчёты об альфа-канале
- OpenAI Help Center — Provenance signals: Content Credentials и SynthID

