AIFreeAPI Logo

Прозрачный фон в GPT Image 2: запрос и проверка PNG

A
3 min readРазработка ИИ

Для прозрачного изображения недостаточно расширения PNG. Нужно согласовать параметры запроса и формат, декодировать ответ, а затем проверить альфа-канал готового файла.

Прозрачный фон GPT Image 2: параметры Image API, форматы PNG и WebP и проверка альфа-канала

В актуальной версии 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 может выглядеть так:

bash
curl 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
Изолируй товар на полностью прозрачном фоне. Сохрани форму, пропорции, цвета и текст этикетки без изменений. Сделай чистый край без светлого ореола. Не добавляй сцену, однотонную подложку, шахматную сетку или тень.

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

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

Проверяйте данные файла, а не клетчатую картинку

Запрос GPT Image 2, сохранение PNG или WebP и проверка прозрачных пикселей с Pillow, включая белый фон и нарисованную сетку.
Запрос GPT Image 2, сохранение PNG или WebP и проверка прозрачных пикселей с Pillow, включая белый фон и нарисованную сетку.

Серые клетки могут быть интерфейсным обозначением прозрачности, а могут оказаться нарисованной частью изображения. Быстрая проверка с Pillow показывает реальное распределение значений Alpha:

python
from 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("В файле нет прозрачных пикселей")

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

По симптому можно найти первый сбой

Правильный прозрачный файл и типичные ошибки: белый фон, нарисованная сетка, ореол, Alpha-гистограмма и проверка на разных подложках.
Правильный прозрачный файл и типичные ошибки: белый фон, нарисованная сетка, ореол, Alpha-гистограмма и проверка на разных подложках.
Что видноВероятная причинаЧто проверить
Получен JPEGФормат изменён в запросе или посредникомИтоговое тело запроса, MIME и сигнатуру файла
У PNG белый прямоугольникbackground не передан либо проигнорированПрямой минимальный запрос с transparent
Клетки остаются на любой подложкеСетка нарисована в RGB-слоеАльфа-канал и формулировку без checkerboard
После редактирования фон вернулсяВ новой команде не сохранено условиеПовторить требование прозрачного фона
На тёмном фоне появился белый ореолКрай смешан со светлой подложкойПроверить светлый и тёмный варианты, исправить маску
Исходник прозрачен, миниатюра нетКонвертер или CDN удалил AlphaАнализировать именно конечный файл

Для совместимого стороннего сервиса отдельно убедитесь, что параметр действительно передаётся в OpenAI-совместимую реализацию. Ответ 200 и знакомое имя модели не доказывают соответствие. Полезный журнал содержит фактическую модель, окончательное тело запроса, MIME, сигнатуру декодированного файла и статистику альфа-канала.

Preview-функция не отменяет запасной способ

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

Если сначала нужно выбрать между прямым Image API, инструментом генерации в Responses, Codex и сторонним шлюзом, откройте руководство по GPT Image 2 API. Для отдельного прозрачного ассета достаточно более короткой дисциплины: явно задать фон и формат, сохранить исходные байты и снова проверить Alpha после каждого преобразования.