Короткий ответ: где прозрачный фон работает сейчас
Модели OpenAI умеют отдавать картинку с настоящим прозрачным фоном. В API для этого нужны два параметра: background: "transparent" и output_format: "png" или "webp". JPEG альфа-канала не хранит, поэтому для прозрачности не подходит. Значение по умолчанию auto — это не просьба о прозрачности, а разрешение модели решить самой.
По состоянию на 25 сентября 2026 года картина такая:
| Где создаётся изображение | Прозрачный фон | Что учесть |
|---|---|---|
API, gpt-image-2.5-flare и gpt-image-2.5-sunburst | Поддерживается | OpenAI советует модели 2.5 для новых интеграций |
API, gpt-image-2 (снапшот gpt-image-2-2026-04-21) | В статусе preview (предварительный доступ) | Подходит, если интеграция уже построена на этой модели или нужен Batch |
| Приложение ChatGPT | OpenAI пишет, что ChatGPT Images может выполнить просьбу сделать фон прозрачным | Формат и альфа-канал скачанного файла в справке не описаны, файл нужно проверить |
| Сторонний шлюз или облачная платформа с моделями OpenAI | Зависит от сервиса | Сервис может отклонить параметр, даже если сам OpenAI его поддерживает |
Статусы взяты из справочника Images API: для обеих моделей 2.5 прозрачный фон указан как поддерживаемый, для gpt-image-2 — как preview. Preview означает, что функция доступна, но OpenAI не даёт по ней обещаний качества или стабильности. В руководстве по генерации изображений gpt-image-2 уже отнесена к предыдущим моделям, но не снята с поддержки.
Готовый файл нужно проверять в любом случае: расширение .png ещё не означает прозрачность, а белый фон в окне просмотра не означает её отсутствие. Скрипт проверки приведён ниже.
«Not supported»: откуда утверждения, что прозрачности нет
Противоречивые утверждения относятся к трём разным периодам. До августа 2026 года gpt-image-2 действительно не умела делать прозрачный фон. В августе OpenAI открыла эту возможность в статусе preview. 8 сентября 2026 года вышли снапшоты GPT Image 2.5 Flare и Sunburst, у которых прозрачность уже без пометки preview; на той же неделе вышли ChatGPT Images 2.5. Поэтому материал, написанный летом, может честно сообщать «не поддерживается» и при этом давно устареть.
Отдельный случай — сообщение Transparent background is not supported for this model в ответе на свежий запрос. Его может выдать не OpenAI, а сервис-посредник, который ещё не научился передавать параметр. Примеры по состоянию на 25 сентября 2026 года: в описании модели openai/gpt-image-2 на Cloudflare Workers AI прямо сказано, что прозрачный фон не поддерживается, а в трекере open-source-шлюза sub2api есть открытая заявка о том, что этот же текст ошибки приходит для gpt-image-2 и обеих моделей 2.5.
Если вы видите такую ошибку, проверьте адрес, на который уходит запрос. Запрос на api.openai.com и запрос через совместимый сервис с тем же именем модели — разные маршруты: совпадение имён не гарантирует одинаковую обработку параметров.
Какую модель выбрать: GPT Image 2.5, gpt-image-2 или ChatGPT
- Новый проект — одна из моделей 2.5. OpenAI описывает Flare как быструю модель для повседневной генерации, а Sunburst — как вариант для задач, где важнее всего точность правки. Отличаются ли их контуры на прозрачном фоне, OpenAI не сообщает; если края критичны, сгенерируйте один и тот же объект обеими моделями и сравните.
- Существующая интеграция на
gpt-image-2— можно остаться на ней, помня о статусе preview. Batch есть только уgpt-image-2; у моделей 2.5 он не поддерживается. - Разовая картинка без кода — ChatGPT, с проверкой скачанного файла. Когда хватает ChatGPT, а когда нужен API, подробнее разобрано в материале «Генератор изображений ChatGPT: официальный вход, бесплатные инструменты и граница API».
Отдельной платы за прозрачный фон в прайсе OpenAI нет; стоимость определяется токенами, то есть размером и качеством. Ставки у трёх моделей одинаковые, но расход токенов разный. По официальному калькулятору, только выход, 1024×1024: у моделей 2.5 medium стоит около $0,01317, high — около $0,05268; у gpt-image-2 medium — около $0,05268, high — около $0,21072. Названия уровней качества у двух поколений не равнозначны, так что сравнивать нужно результат, а не слово high. Расчёт для других размеров — в статье «Сколько стоит изображение в OpenAI API: GPT Image 2.5 и GPT Image 2», различия Flare и Sunburst — в «GPT Image 2.5: Flare или Sunburst, стоимость и работа с API».
Если вы находитесь в России: её нет в списке стран, где доступен OpenAI API, и OpenAI предупреждает, что доступ из стран вне списка может привести к блокировке или приостановке аккаунта. Параметры и проверки ниже от этого не меняются, но выбор маршрута в таком случае определяется правилами сервиса, а не настройками запроса.
Запрос: background: "transparent" и формулировка промпта
Одного параметра background: "transparent" может не хватить. В примере OpenAI Cookbook о прозрачных изображениях отдельно предупреждают: указания в промпте важнее параметра. Если в тексте описаны сцена, цвет фона, стол или студийный задник, модель может нарисовать этот фон вместо прозрачности.
Поэтому фон в промпте упоминать нужно, но только как требование прозрачности. В руководстве OpenAI Cookbook по промптам советуют прямо просить изолированный объект на полностью прозрачном фоне и исключать сцену, сплошную подложку, нарисованную шахматную сетку и лишние тени.
Запрос через cURL (нужен ключ в переменной OPENAI_API_KEY; флаг --fail-with-body появился в cURL 7.76.0):
curl --fail-with-body --silent --show-error \
https://api.openai.com/v1/images/generations \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.5-flare",
"prompt": "Эмалевый значок в виде маяка на скале, синие и белые полосы, золотой кант. Изолированный объект на полностью прозрачном фоне. Без сцены, без сплошной подложки, без нарисованной шахматной сетки, без падающей тени.",
"background": "transparent",
"output_format": "png",
"size": "1024x1024",
"quality": "medium"
}' \
--output response.jsonЧто можно менять:
- для
gpt-image-2замените только значениеmodel, остальное работает так же; - для WebP укажите
"output_format": "webp"и при желании добавьте"output_compression"от 0 до 100 (по умолчанию 100); для PNG этот параметр не передают; sizeиqualityвыбирайте под задачу: у моделей 2.5 есть ещёxhighиmax, уgpt-image-2верхний уровень —high. Ошибки размера разобраны в статье «GPT Image 2: почему size 1024x576 недопустим и как получить нужный файл».
Если в ответ приходит Your organization must be verified, прозрачность ни при чём — см. «GPT Image 2: что делать с ошибкой Your organization must be verified».
Сохраните ответ без перекодирования
Images API возвращает изображение в base64 в поле data[0].b64_json; ссылку на файл модели GPT Image не отдают, параметр response_format для них не поддерживается. В том же JSON есть поле background со значением transparent или opaque и поле output_format. Их стоит прочитать до декодирования: opaque сразу показывает, что прозрачность не применилась. При этом transparent говорит лишь о применённой настройке, а не о качестве контура.
Скрипт save_image.py читает ответ, проверяет эти поля, декодирует байты и записывает их как есть — без открытия и пересохранения через графическую библиотеку. Нужны Python 3 и Pillow (python3 -m pip install Pillow).
import base64
import io
import json
import sys
from pathlib import Path
from PIL import Image
response_path, output_path = Path(sys.argv[1]), Path(sys.argv[2])
payload = json.loads(response_path.read_text(encoding="utf-8"))
if payload.get("error"):
sys.exit(f"Сервис вернул ошибку: {payload['error']}")
background = payload.get("background")
print("background:", background, "| output_format:", payload.get("output_format"))
if background is None:
print("Поля background в ответе нет: решает только проверка файла")
elif background != "transparent":
sys.exit("Фон применён как непрозрачный: проверьте параметры запроса")
try:
encoded = payload["data"][0]["b64_json"]
except (KeyError, IndexError, TypeError):
sys.exit("В ответе нет data[0].b64_json")
raw = base64.b64decode(encoded, validate=True)
with Image.open(io.BytesIO(raw)) as image:
actual = image.format
expected = {".png": "PNG", ".webp": "WEBP"}.get(output_path.suffix.lower())
if actual != expected:
sys.exit(f"Внутри {actual}, а расширение {output_path.suffix}: исправьте имя файла")
output_path.write_bytes(raw)
print(f"Сохранено {len(raw)} байт: {output_path}")python3 save_image.py response.json lighthouse.pngРасширение должно совпадать с тем, что лежит внутри: файл icon.webp с байтами PNG остаётся PNG, и часть сервисов обработает его неправильно. Поэтому скрипт сверяет реальный формат и не переименовывает файл за вас.
Проверьте альфа-канал в самом файле
В восьмибитном альфа-канале 0 — полностью прозрачный пиксель, 255 — полностью непрозрачный, всё между ними — полупрозрачность (мягкие края, стекло, дым). Файл прозрачен, если в нём есть пиксели с альфой меньше 255 там, где должен быть фон. Режим RGBA сам по себе этого не доказывает: при переводе в RGBA Pillow добавляет полностью непрозрачный канал, но белый фон никуда не девается.
Скрипт check_alpha.py считает пиксели по значению альфы (так же файлы проверяют в примерах OpenAI Cookbook) и собирает две копии на светлой и тёмной подложке:
import sys
from pathlib import Path
from PIL import Image
path = Path(sys.argv[1])
with Image.open(path) as source:
print("Формат:", source.format, "| режим:", source.mode, "| размер:", source.size)
rgba = source.convert("RGBA")
histogram = rgba.getchannel("A").histogram()
total = rgba.width * rgba.height
clear, solid = histogram[0], histogram[255]
partial = total - clear - solid
print(f"Прозрачных: {clear} ({100 * clear / total:.1f} %), "
f"полупрозрачных: {partial}, непрозрачных: {solid}")
if solid == total:
sys.exit("Все пиксели непрозрачны: прозрачного фона в файле нет")
if clear == total:
sys.exit("Все пиксели прозрачны: объекта в файле нет")
for label, color in (("light", (255, 255, 255, 255)), ("dark", (24, 24, 24, 255))):
backdrop = Image.new("RGBA", rgba.size, color)
preview = Image.alpha_composite(backdrop, rgba).convert("RGB")
preview.save(path.with_name(f"{path.stem}-{label}.png"))
print("Альфа-канал есть. Откройте копии -light и -dark и осмотрите контур.")python3 check_alpha.py lighthouse.pngПреобразование в RGB здесь стоит намеренно: так собираются непрозрачные копии для осмотра, исходник не меняется. Что смотреть на копиях:
- светлый ореол вокруг объекта заметнее на тёмной копии, тёмная кайма — на светлой;
- шахматная сетка, видимая на обеих копиях, нарисована в пикселях: модель изобразила «прозрачность» картинкой;
- отверстия внутри объекта (ручка кружки, окна маяка) должны принимать цвет подложки;
- у стекла, волос и свечения полупрозрачные пиксели — это нормально, универсальной «правильной доли» прозрачных пикселей нет.
Если в просмотрщике картинка на белом или чёрном фоне, а на обеих копиях фон вокруг объекта меняет цвет, фон подставлял просмотрщик — генерировать заново не нужно. Скриншот окна для проверки не годится: в нём всегда уже есть фон интерфейса.
Как сделать прозрачный фон в ChatGPT
В справке OpenAI об изображениях в ChatGPT сказано, что ChatGPT Images может выполнить просьбу добавить текст, детали или сделать фон прозрачным, а также отредактировать загруженную картинку. ChatGPT Images доступен на всех тарифах, в вебе, на iOS и Android. Сохранить картинку можно кнопкой Save в элементах управления изображением.
Чего в справке нет: в каком формате сохраняется файл, есть ли отдельный переключатель прозрачности и сохраняется ли настоящий альфа-канал. Поэтому порядок такой:
- Попросите явно: «изолированный объект на полностью прозрачном фоне, без подложки, без шахматной сетки, без тени».
- Скачайте файл через Save, а не делайте скриншот и не копируйте картинку из окна.
- Проверьте файл скриптом
check_alpha.pyили хотя бы положите его на тёмный слайд в редакторе презентаций.
Если файл непрозрачный или сетка нарисована в пикселях, для этой задачи нужен API.
PNG или WebP

Оба формата хранят прозрачность, выбор зависит от того, куда файл пойдёт дальше.
| Задача | Формат запроса | Почему |
|---|---|---|
| Исходник для правки, вёрстки, печати | png, без output_compression | Формат по умолчанию, без потерь, понятен любому редактору |
| Картинка для сайта, который принимает WebP | webp, сжатие по необходимости | WebP хранит прозрачность и при сжатии с потерями, и без потерь |
| Нужны оба варианта | png, затем локальная конвертация | Второй запрос к модели не нужен и даст другую картинку |
Не рассчитывайте, что output_compression: 50 уменьшит файл ровно вдвое: в справочнике это описано как уровень сжатия от 0 до 100 для WebP и JPEG, конкретный размер файла документация не гарантирует. Если исходник уже в PNG, WebP проще сделать локально, указав режим явно:
from PIL import Image
with Image.open("lighthouse.png") as source:
source.convert("RGBA").save("lighthouse.webp", "WEBP", lossless=True, exact=True)lossless=True включает сжатие без потерь, exact=True сохраняет цветовые значения полностью прозрачных пикселей — это настройки записи WebP в Pillow, а не аналог параметров API. Для сжатия с потерями вместо них укажите, например, quality=80: альфа-канал сохранится, его качество задаёт alpha_quality (по умолчанию 100). WebP без потерь не обязательно окажется меньше PNG для конкретной картинки. После конвертации снова запустите check_alpha.py.
Главная ошибка в обработке — вызов convert("RGB") или сохранение в JPEG где-то по пути: оба действия уничтожают прозрачность безвозвратно.
Где прозрачность теряется после генерации

Исправный исходник ещё не гарантирует прозрачную картинку на сайте. Альфа-канал могут выбросить конвертер, CMS при создании миниатюр, оптимизатор изображений или CDN с автоматическим преобразованием форматов. Проверяйте не загруженный файл, а скачанный с сайта: тем же скриптом, по очереди после каждого этапа, пока не найдёте первый, где непрозрачных пикселей стало 100 %.
Если нужно разложить прозрачные элементы по слоям для дальнейшей работы в Photoshop или Photopea, следующий шаг описан в статье «Как сделать редактируемый PSD из изображения GPT Image 2».
Если есть исходное фото: правка вместо генерации
Убрать фон у существующей фотографии можно через /v1/images/edits: этот эндпоинт принимает те же background и output_format. Пример с моделью Sunburst, которую OpenAI советует там, где важна точность правки:
curl --fail-with-body --silent --show-error \
https://api.openai.com/v1/images/edits \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F 'model=gpt-image-2.5-sunburst' \
-F 'image=@product.png' \
-F 'prompt=Убери фон вокруг товара. Сохрани форму, пропорции, цвета и надпись на этикетке. Полностью прозрачный фон, без подложки, без шахматной сетки, без тени.' \
-F 'background=transparent' \
-F 'output_format=png' \
--output edit-response.json
python3 save_image.py edit-response.json product-cutout.png
python3 check_alpha.py product-cutout.pngВажная оговорка: результат правки — заново сгенерированное изображение, а не вырезанный фрагмент исходника. Маска служит подсказкой, попиксельного совпадения никто не обещает, а по собственным ограничениям OpenAI точное расположение текста и соблюдение фирменного стиля всё ещё могут сбиваться. Для каталога, где этикетка и форма товара должны совпадать с оригиналом, надёжнее обтравка: специализированный инструмент удаления фона или ручная маска. При каждой следующей правке повторяйте в промпте требование прозрачного фона — иначе модель может вернуть подложку. Как передавать файлы и маску, разобрано в статье «OpenAI Image Editing API: правка изображений через images.edit».
Фон не прозрачный: симптом, причина, действие
| Что вы видите | Вероятная причина | Что сделать |
|---|---|---|
Transparent background is not supported for this model | Запрос ушёл на сервис, который не передаёт параметр | Проверить базовый URL; сравнить с запросом на api.openai.com с теми же параметрами |
Ошибка при output_format: "jpeg" или непрозрачный JPEG | JPEG не хранит альфа-канал | Запросить png или webp |
В ответе background: "opaque" | Прозрачность не запрошена или не применилась; auto не равно transparent | Проверить, что в теле запроса стоит "transparent" |
В ответе transparent, но на картинке сцена или цветной фон | Промпт описывает фон | Убрать из промпта описание окружения, прямо попросить полностью прозрачный фон |
| Скрипт: все пиксели непрозрачны | Файл без прозрачности (или был пересохранён без альфы) | Проверить ответ API и все шаги обработки после него |
| Скрипт: все пиксели прозрачны | Пустое изображение | Повторить генерацию, уточнив объект |
| Шахматная сетка видна на обеих копиях | Сетка нарисована в пикселях | Добавить в промпт запрет на шахматную сетку |
| Белый или чёрный фон только в просмотрщике | Просмотрщик подставляет свой фон | Ничего не менять: смотреть копии -light и -dark |
| Светлый ореол или грязный край | Проблема контура, а не альфа-канала | Сравнить на обеих копиях; попробовать другой уровень качества или другую модель 2.5 |
| После следующей правки появился фон | В новом промпте не повторили требование прозрачности | Повторить background=transparent и требование в тексте |
| Исходник прозрачный, на сайте — нет | Альфу выбросили конвертер, CMS или CDN | Проверять файл после каждого этапа, найти первый с потерей |
Частые вопросы
Поддерживает ли GPT Image 2 прозрачный фон?
Да, в API — в статусе preview, с background: "transparent" и форматом PNG или WebP. Модели GPT Image 2.5 Flare и Sunburst поддерживают прозрачность без этой пометки, и для новых проектов OpenAI советует именно их.
Почему мой PNG с белым фоном?
PNG может хранить прозрачность, но не обязан. Если картинку сгенерировали без прозрачного фона, конвертировали из JPEG или пересохранили в RGB, белый фон записан в пикселях. Скрипт check_alpha.py покажет, есть ли в файле прозрачные пиксели; если их нет, файл нужно сгенерировать заново с background: "transparent".
Стоит ли прозрачный фон дороже?
В прайсе OpenAI отдельной платы за background: "transparent" нет. Цена зависит от модели, размера и качества.
Можно ли просто не упоминать фон в промпте?
Надёжнее упомянуть, но только как требование: «изолированный объект на полностью прозрачном фоне, без сцены, подложки, шахматной сетки и тени». OpenAI рекомендует именно такую формулировку; описание окружения, напротив, может перебить параметр.



