# GPT Image 2 и 2.5: прозрачный фон в PNG и WebP

> Прозрачный PNG или WebP дают GPT Image 2.5 и gpt-image-2 (у неё — в статусе preview) с background=transparent. ChatGPT тоже убирает фон, но файл надо проверить.

- Source: https://www.aifreeapi.com/ru/posts/gpt-image-2-transparent-background
- Language: ru
- Published: 2026-09-03
- Updated: 2026-09-25
- Publisher: AI Free API (https://www.aifreeapi.com)

## Короткий ответ: где прозрачный фон работает сейчас

Модели 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](https://developers.openai.com/api/reference/resources/images/methods/generate): для обеих моделей 2.5 прозрачный фон указан как поддерживаемый, для `gpt-image-2` — как preview. Preview означает, что функция доступна, но OpenAI не даёт по ней обещаний качества или стабильности. В [руководстве по генерации изображений](https://developers.openai.com/api/docs/guides/image-generation#earlier-gpt-image-models) `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](https://developers.cloudflare.com/ai/models/openai/gpt-image-2/) прямо сказано, что прозрачный фон не поддерживается, а в трекере open-source-шлюза sub2api есть [открытая заявка](https://github.com/Wei-Shaw/sub2api/issues/7150) о том, что этот же текст ошибки приходит для `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»](/ru/topics/gpt-image).

Отдельной платы за прозрачный фон в [прайсе OpenAI](https://developers.openai.com/api/docs/pricing) нет; стоимость определяется токенами, то есть размером и качеством. Ставки у трёх моделей одинаковые, но расход токенов разный. По официальному калькулятору, только выход, 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»](/ru/posts/openai-image-generation-api-pricing), различия Flare и Sunburst — в [«GPT Image 2.5: Flare или Sunburst, стоимость и работа с API»](/ru/posts/gpt-image-2-5).

Если вы находитесь в России: её нет в [списке стран, где доступен OpenAI API](https://developers.openai.com/api/docs/supported-countries), и OpenAI предупреждает, что доступ из стран вне списка может привести к блокировке или приостановке аккаунта. Параметры и проверки ниже от этого не меняются, но выбор маршрута в таком случае определяется правилами сервиса, а не настройками запроса.

## Запрос: `background: "transparent"` и формулировка промпта

Одного параметра `background: "transparent"` может не хватить. В [примере OpenAI Cookbook о прозрачных изображениях](https://developers.openai.com/cookbook/examples/multimodal/transparent-image-assets-for-campaigns-and-presentations) отдельно предупреждают: указания в промпте важнее параметра. Если в тексте описаны сцена, цвет фона, стол или студийный задник, модель может нарисовать этот фон вместо прозрачности.

Поэтому фон в промпте упоминать нужно, но только как требование прозрачности. В [руководстве OpenAI Cookbook по промптам](https://developers.openai.com/cookbook/examples/multimodal/image-gen-models-prompting-guide) советуют прямо просить изолированный объект на полностью прозрачном фоне и исключать сцену, сплошную подложку, нарисованную шахматную сетку и лишние тени.

Запрос через cURL (нужен ключ в переменной `OPENAI_API_KEY`; флаг `--fail-with-body` появился в cURL 7.76.0):

```bash
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 недопустим и как получить нужный файл»](/ru/posts/gpt-image-2-invalid-size).

Если в ответ приходит `Your organization must be verified`, прозрачность ни при чём — см. [«GPT Image 2: что делать с ошибкой Your organization must be verified»](/ru/posts/openai-image-generation-api-verification).

## Сохраните ответ без перекодирования

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`).

```python
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}")
```

```bash
python3 save_image.py response.json lighthouse.png
```

Расширение должно совпадать с тем, что лежит внутри: файл `icon.webp` с байтами PNG остаётся PNG, и часть сервисов обработает его неправильно. Поэтому скрипт сверяет реальный формат и не переименовывает файл за вас.

## Проверьте альфа-канал в самом файле

В восьмибитном альфа-канале 0 — полностью прозрачный пиксель, 255 — полностью непрозрачный, всё между ними — полупрозрачность (мягкие края, стекло, дым). Файл прозрачен, если в нём есть пиксели с альфой меньше 255 там, где должен быть фон. Режим `RGBA` сам по себе этого не доказывает: при переводе в RGBA Pillow добавляет полностью непрозрачный канал, но белый фон никуда не девается.

Скрипт `check_alpha.py` считает пиксели по значению альфы (так же файлы проверяют в примерах OpenAI Cookbook) и собирает две копии на светлой и тёмной подложке:

```python
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 и осмотрите контур.")
```

```bash
python3 check_alpha.py lighthouse.png
```

Преобразование в RGB здесь стоит намеренно: так собираются непрозрачные копии для осмотра, исходник не меняется. Что смотреть на копиях:

- светлый ореол вокруг объекта заметнее на тёмной копии, тёмная кайма — на светлой;
- шахматная сетка, видимая на обеих копиях, нарисована в пикселях: модель изобразила «прозрачность» картинкой;
- отверстия внутри объекта (ручка кружки, окна маяка) должны принимать цвет подложки;
- у стекла, волос и свечения полупрозрачные пиксели — это нормально, универсальной «правильной доли» прозрачных пикселей нет.

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

## Как сделать прозрачный фон в ChatGPT

В [справке OpenAI об изображениях в ChatGPT](https://help.openai.com/en/articles/11084440-images-in-chatgpt) сказано, что ChatGPT Images может выполнить просьбу добавить текст, детали или сделать фон прозрачным, а также отредактировать загруженную картинку. ChatGPT Images доступен на всех тарифах, в вебе, на iOS и Android. Сохранить картинку можно кнопкой Save в элементах управления изображением.

Чего в справке нет: в каком формате сохраняется файл, есть ли отдельный переключатель прозрачности и сохраняется ли настоящий альфа-канал. Поэтому порядок такой:

1. Попросите явно: «изолированный объект на полностью прозрачном фоне, без подложки, без шахматной сетки, без тени».
2. Скачайте файл через Save, а не делайте скриншот и не копируйте картинку из окна.
3. Проверьте файл скриптом `check_alpha.py` или хотя бы положите его на тёмный слайд в редакторе презентаций.

Если файл непрозрачный или сетка нарисована в пикселях, для этой задачи нужен API.

## PNG или WebP

![Две папки: PNG с керамической кружкой на шахматной сетке и подписью «исходник для работы» и WebP с той же кружкой в макете интернет-магазина и подписью «изображение для сайта»](https://www.aifreeapi.com/posts/ru/gpt-image-2-transparent-background/img/png-webp-workflow.webp)

Оба формата хранят прозрачность, выбор зависит от того, куда файл пойдёт дальше.

| Задача | Формат запроса | Почему |
| --- | --- | --- |
| Исходник для правки, вёрстки, печати | `png`, без `output_compression` | Формат по умолчанию, без потерь, понятен любому редактору |
| Картинка для сайта, который принимает WebP | `webp`, сжатие по необходимости | WebP хранит прозрачность и при сжатии с потерями, и без потерь |
| Нужны оба варианта | `png`, затем локальная конвертация | Второй запрос к модели не нужен и даст другую картинку |

Не рассчитывайте, что `output_compression: 50` уменьшит файл ровно вдвое: в справочнике это описано как уровень сжатия от 0 до 100 для WebP и JPEG, конкретный размер файла документация не гарантирует. Если исходник уже в PNG, WebP проще сделать локально, указав режим явно:

```python
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](https://pillow.readthedocs.io/en/stable/handbook/image-file-formats.html#webp), а не аналог параметров API. Для сжатия с потерями вместо них укажите, например, `quality=80`: альфа-канал сохранится, его качество задаёт `alpha_quality` (по умолчанию 100). WebP без потерь не обязательно окажется меньше PNG для конкретной картинки. После конвертации снова запустите `check_alpha.py`.

Главная ошибка в обработке — вызов `convert("RGB")` или сохранение в JPEG где-то по пути: оба действия уничтожают прозрачность безвозвратно.

## Где прозрачность теряется после генерации

![Четыре карточки с листом папоротника на шахматной сетке по этапам: исходник PNG, конвертация WebP, загрузка, скачанный файл; лупа над последним листом и две миниатюры на светлом и тёмном фоне](https://www.aifreeapi.com/posts/ru/gpt-image-2-transparent-background/img/alpha-delivery-check.webp)

Исправный исходник ещё не гарантирует прозрачную картинку на сайте. Альфа-канал могут выбросить конвертер, CMS при создании миниатюр, оптимизатор изображений или CDN с автоматическим преобразованием форматов. Проверяйте не загруженный файл, а скачанный с сайта: тем же скриптом, по очереди после каждого этапа, пока не найдёте первый, где непрозрачных пикселей стало 100 %.

Если нужно разложить прозрачные элементы по слоям для дальнейшей работы в Photoshop или Photopea, следующий шаг описан в статье [«Как сделать редактируемый PSD из изображения GPT Image 2»](/ru/posts/gpt-image-2-psd-layers-image-to-html).

## Если есть исходное фото: правка вместо генерации

Убрать фон у существующей фотографии можно через `/v1/images/edits`: этот эндпоинт принимает те же `background` и `output_format`. Пример с моделью Sunburst, которую OpenAI советует там, где важна точность правки:

```bash
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](https://developers.openai.com/api/docs/guides/image-generation#limitations) точное расположение текста и соблюдение фирменного стиля всё ещё могут сбиваться. Для каталога, где этикетка и форма товара должны совпадать с оригиналом, надёжнее обтравка: специализированный инструмент удаления фона или ручная маска. При каждой следующей правке повторяйте в промпте требование прозрачного фона — иначе модель может вернуть подложку. Как передавать файлы и маску, разобрано в статье [«OpenAI Image Editing API: правка изображений через images.edit»](/ru/posts/openai-image-editing-api).

## Фон не прозрачный: симптом, причина, действие

| Что вы видите | Вероятная причина | Что сделать |
| --- | --- | --- |
| `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 рекомендует именно такую формулировку; описание окружения, напротив, может перебить параметр.
