В актуальной версии OpenAI API модель gpt-image-2 умеет создавать изображения с прозрачным фоном. Возможность пока имеет статус preview. Рабочий запрос должен явно содержать background: "transparent", а результат следует получать в PNG или WebP. После сохранения файл нужно проверить: наличие расширения .png ещё не означает, что в изображении есть прозрачные пиксели.
Старые сообщения о том, что GPT Image 2 не поддерживает прозрачность, не обязательно были ошибочными: до обновления API такое ограничение действительно встречалось. Для новой реализации важнее сверяться с текущей спецификацией и датой источника, чем повторять совет из старого обсуждения.
Параметр фона и формат работают вместе
В руководстве OpenAI по генерации изображений Image API указан как прямой способ создать или отредактировать изображение. Официальное руководство по GPT Image уточняет правила прозрачного фона для gpt-image-2:
- значение
backgroundдолжно бытьtransparent; output_formatдолжен бытьpngилиwebp;- JPEG не подходит, поскольку не хранит требуемую прозрачность;
- для PNG не задают
output_compression, а WebP допускает дополнительное сжатие; - в описании полезно потребовать изолированный объект без сцены, сплошной подложки, шахматного узора и лишней тени.
Текстовое пожелание «сделай прозрачный фон» помогает модели понять композицию, но не заменяет параметр API. Если оставить background в режиме auto, выбор фона останется за моделью.
Минимальный запрос через cURL может выглядеть так:
bashcurl https://api.openai.com/v1/images/generations \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-image-2", "prompt": "Один керамический значок-компас, изолированный объект, чёткий силуэт, полностью прозрачный фон, без сцены, подложки, шахматной сетки и тени", "background": "transparent", "output_format": "png", "size": "1024x1024", "quality": "medium" }' \ | jq -r '.data[0].b64_json' \ | base64 --decode > compass.png
Команда сохраняет декодированные байты, а не JSON-строку. При выборе WebP нужно одновременно поменять output_format и расширение файла. Несоответствие формата, MIME-типа и имени файла часто проявляется только на этапе загрузки в CMS или обработки миниатюр.
Для удаления фона используйте редактирование
Если исходное фото уже существует, задача состоит не в новой генерации, а в редактировании. Передайте изображение в Image API и отдельно перечислите то, что требуется сохранить: форму товара, цвет, пропорции, надпись на упаковке. Затем укажите, что фон и ненужная контактная тень должны исчезнуть.
textИзолируй товар на полностью прозрачном фоне. Сохрани форму, пропорции, цвета и текст этикетки без изменений. Сделай чистый край без светлого ореола. Не добавляй сцену, однотонную подложку, шахматную сетку или тень.
При каждой последующей правке требование прозрачности следует повторять. Новая команда «измени цвет крышки» запускает очередное преобразование, и прежний фон не обязан сохраниться автоматически.
Особого контроля требуют волосы, мех, стекло, дым и мягкое свечение. На их границах нужны не только полностью прозрачные и полностью непрозрачные пиксели, но и промежуточные значения альфа-канала. Поэтому результат стоит просматривать как минимум на белой и почти чёрной подложке.
Проверяйте данные файла, а не клетчатую картинку

Серые клетки могут быть интерфейсным обозначением прозрачности, а могут оказаться нарисованной частью изображения. Быстрая проверка с Pillow показывает реальное распределение значений Alpha:
pythonfrom PIL import Image image = Image.open("compass.png").convert("RGBA") alpha = image.getchannel("A") histogram = alpha.histogram() clear_pixels = histogram[0] soft_pixels = sum(histogram[1:255]) solid_pixels = histogram[255] print("прозрачные:", clear_pixels) print("полупрозрачные:", soft_pixels) print("непрозрачные:", solid_pixels) if clear_pixels == 0 and soft_pixels == 0: raise RuntimeError("В файле нет прозрачных пикселей")
Такая проверка подтверждает наличие прозрачности, но не оценивает качество контура. Для небольшого предмета по центру большая часть холста обычно будет прозрачной. Для дыма или стекла доля полупрозрачных пикселей естественно выше. Универсальный процент здесь только мешает: критерий нужно привязывать к конкретному типу материала.
По симптому можно найти первый сбой

| Что видно | Вероятная причина | Что проверить |
|---|---|---|
| Получен JPEG | Формат изменён в запросе или посредником | Итоговое тело запроса, MIME и сигнатуру файла |
| У PNG белый прямоугольник | background не передан либо проигнорирован | Прямой минимальный запрос с transparent |
| Клетки остаются на любой подложке | Сетка нарисована в RGB-слое | Альфа-канал и формулировку без checkerboard |
| После редактирования фон вернулся | В новой команде не сохранено условие | Повторить требование прозрачного фона |
| На тёмном фоне появился белый ореол | Край смешан со светлой подложкой | Проверить светлый и тёмный варианты, исправить маску |
| Исходник прозрачен, миниатюра нет | Конвертер или CDN удалил Alpha | Анализировать именно конечный файл |
Для совместимого стороннего сервиса отдельно убедитесь, что параметр действительно передаётся в OpenAI-совместимую реализацию. Ответ 200 и знакомое имя модели не доказывают соответствие. Полезный журнал содержит фактическую модель, окончательное тело запроса, MIME, сигнатуру декодированного файла и статистику альфа-канала.
Preview-функция не отменяет запасной способ
Нативный прозрачный фон экономит время на простых товарах, иконках, стикерах и элементах интерфейса. Но он не обещает безупречную обработку волос, прозрачных материалов, мелкого текста на упаковке или всей товарной серии. Для массового процесса разумно проверять выборку и сохранять возможность поправить маску либо удалить фон отдельным инструментом.
Если сначала нужно выбрать между прямым Image API, инструментом генерации в Responses, Codex и сторонним шлюзом, откройте руководство по GPT Image 2 API. Для отдельного прозрачного ассета достаточно более короткой дисциплины: явно задать фон и формат, сохранить исходные байты и снова проверить Alpha после каждого преобразования.



