Перейти к основному содержанию

PNG с прозрачным фоном: генерация в GPT Image 2 и проверка файла

3 мин чтенияРедактирование изображений

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

Иллюстрация к созданию и проверке PNG с прозрачным фоном

У GPT Image 2 появилась поддержка прозрачного фона через API в режиме предварительного доступа. Для PNG укажите background="transparent" и output_format="png". Это актуальная возможность из официального руководства OpenAI; старое утверждение о полном отсутствии прозрачности больше не подходит для описания API.

Но расширение .png само по себе ничего не говорит о фоне. Внутри файла может остаться белый прямоугольник или нарисованная шахматная сетка. Проверять нужно скачанное изображение: пустые участки должны пропускать новый фон, а объект — оставаться видимым.

Поясняющая иллюстрация к подготовке прозрачных изображений

Сначала решите, можно ли менять сам объект

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

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

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

Запрос к API и сохранение PNG

Пример использует Python-пакет openai и переменную окружения OPENAI_API_KEY. Нужен аккаунт с доступом к модели. Описание параметров API не подтверждает доступность сервиса в стране читателя и не обещает одинаковые настройки в ChatGPT или стороннем приложении.

python
import base64 from pathlib import Path from openai import OpenAI client = OpenAI() result = client.images.generate( model="gpt-image-2", prompt=( "Нарисуй отдельную керамическую лису для иллюстрации. " "Объект целиком, с небольшими полями, на полностью прозрачном фоне. " "Без комнаты, подставки, шахматной сетки и падающей тени." ), background="transparent", output_format="png", size="1024x1024", quality="medium", ) if not result.data or not result.data[0].b64_json: raise RuntimeError("В ответе нет изображения") Path("fox.png").write_bytes( base64.b64decode(result.data[0].b64_json, validate=True) )

Руководство по генерации показывает тот же принцип: получить b64_json, декодировать данные и записать байты в файл. Само значение b64_json — не ссылка для скачивания.

Для формата нужен именно output_format, а не response_format="png". Не добавляйте output_compression при выводе PNG. Если нужен WebP, используйте output_format="webp" и сохраните файл с соответствующим расширением. JPEG для прозрачного фона не подходит. Ограничения перечислены в параметрах генерации изображений.

Текст запроса должен соответствовать настройке фона. «Лиса стоит на деревянном столе» задаёт окружение, которое мешает получить отдельный объект. Если нужна тень, опишите её явно и потом проверьте на разных подложках.

Как отличить прозрачность от похожей картинки

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

Для серии файлов полезна простая проверка на Python с Pillow:

python
from PIL import Image with Image.open("fox.png") as source: print("Формат:", source.format) rgba = source.convert("RGBA") alpha = rgba.getchannel("A") minimum, maximum = alpha.getextrema() if minimum == 255: print("Все пиксели непрозрачны") elif maximum == 0: print("Изображение полностью невидимо") else: print("Прозрачность есть; проверьте объект и края") for name, color in [("white", "white"), ("black", "black")]: base = Image.new("RGBA", rgba.size, color) Image.alpha_composite(base, rgba).convert("RGB").save( f"view-{name}.png" )

Использованные операции описаны в документации Pillow. Преобразование в RGBA не удаляет фон: у обычной непрозрачной картинки оно лишь добавит канал с полной непрозрачностью. Файлы view-white.png и view-black.png специально содержат сплошную подложку и предназначены для просмотра, а не для замены прозрачного оригинала.

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

Доработка и повторное использование

При редактировании через API снова передавайте background="transparent" и просите сохранить прозрачный фон. После изменения цвета или детали сравните результат с исходником: форма, надписи и фактура могли измениться. Для точного логотипа разумнее обычная коррекция без перерисовки.

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

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

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

Дополнительная иллюстрация к работе с прозрачными файлами

#GPT Image 2#Прозрачный PNG#Удаление фона#Альфа-канал
Поделиться: