Эта страница — практическое руководство по локализованному редактированию (inpainting) с
gpt-image-2 через POST /v1/images/edits, путем загрузки изображение + маску + prompt. Для полного справочника параметров и интерактивного Playground см. Image Edit API Reference.Основной принцип: альфа-канал определяет область редактирования
Запрос на локализованное редактирование состоит из трех частей:Визуальный пример
Предположим, исходное изображение имеет размер 1024×1024:Маска — это не жесткая обрезка
Маски GPT Image — это не абсолютные ограничения на уровне пикселей, как выделения в Photoshop. Официально редактирование маски по-прежнему остается prompt-guided editing: модель использует маску как ориентир, но не гарантирует строгое соблюдение каждой границы пикселя. Поэтому вы можете увидеть:- Незначительные изменения теней вне маски
- Выход границ объекта за пределы маски
- Согласованные изменения освещения и отражений
- Небольшую перерисовку фона
- Эффекты перехода у границ маски
Повышение стабильности редактирования
Не пишите просто: «измените это на красную рубашку». Вместо этого пишите так:- Сделайте маску немного больше, чем границы целевого объекта
- Не закрывайте только центр объекта — включите края, тени и отражения
- Явно укажите, что должно остаться без изменений
- Если область редактирования слишком мала, увеличьте маску
- Когда требуется абсолютное сохранение, выполните финальное покадровое совмещение самостоятельно (см. ниже)
Маска или не маска? Компромиссы против редактирования только prompt
Частый вопрос: современный AI уже может «редактировать именно то, на что вы указываете» на обычном языке — зачем вообще делать маску? Это правда:gpt-image-2 без маски, имея только «замени чашку слева на столе цветами», обычно правит нужное место — следование инструкциям работает хорошо, и для несложных правок одного prompt обычно достаточно. Но маска решает случаи, когда язык двусмысленен или однозначен, но все еще недостаточно надежен:
Исследования указывают на то же самое: безмасочное (чисто текстовое) редактирование испытывает трудности с точным пространственным контролем — методы в стиле prompt-to-prompt, например, не могут пространственно переместить объект по кадру, а когда неявная область редактирования задана неверно, получается «должна была измениться не та часть, а изменилась не та, что не должна была». Редактирование с маской жертвует немного удобства ради явной пространственной точности.
Требования к файлам с первого взгляда
Назначение ролей при редактировании с несколькими изображениями:
Пример на Python
Пример cURL
Эндпоинт редактирования изображений требуетmultipart/form-data — вы не можете отправить изображение и маску как обычные JSON-поля:
image[], как в официальных примерах.
Пример на Node.js
Откуда берутся маски? Пять распространенных способов
Маски часто кажутся пугающими — «они должны в точности совпадать с исходным изображением пиксель в пиксель». Ключевая мысль: вы почти никогда не рисуете маску с нуля; вы выводите ее из исходного изображения. Будь то код, фоторедактор или веб-Canvas, процесс всегда один: «открыть оригинал → отметить на нем области → экспортировать», поэтому совпадение размеров происходит автоматически.Способ 1: Сгенерируйте прозрачную маску программно
Сделайте прямоугольную область прозрачной (редактируемой):(255, 255, 255, 255)= непрозрачная, сохраняемая область(0, 0, 0, 0)= прозрачная, редактируемая область
Способ 2: Ручное стирание в фоторедакторе
Любой редактор, который поддерживает прозрачные PNG (Photoshop, GIMP, Krita, Photopea и т. д.), может создать маску — все сводится к одному действию: сотрите область, которую нужно редактировать, чтобы она стала прозрачной. В Photoshop:- Откройте копию исходного изображения (работа с самим оригиналом гарантирует совпадение размеров)
- Если слой заблокирован как «Фон», дважды щелкните его, чтобы преобразовать в обычный слой (слои фона не поддерживают прозрачность)
- Выделите область для изменения с помощью инструмента Lasso / Quick Selection / Object Selection
- Нажмите Delete — выделение станет прозрачной шахматной сеткой
- Выберите «Экспортировать как PNG» (с включенной прозрачностью) — получится корректная alpha-маска
Layer → Transparency → Add Alpha Channel, выделите, Delete, экспортируйте как PNG.
Способ 3: Веб-Canvas с кистью
Взаимодействие «проведите кистью по тому, что хотите изменить» в AI-фото приложениях — это всего лишь alpha-маска, генерируемая прямо в браузере и построенная вокруг одного свойства Canvas API. См. ниже Как работает редактирование в стиле кисти.Способ 4: Маски одним кликом через AI-сегментацию
Если даже рисование кистью кажется работой, пусть это сделает модель сегментации. Открытое семейство SAM (Segment Anything Model) от Meta — основной вариант:- Клик для маски: один раз щелкните по объекту, и модель вернет его пиксельно точный контур (вплоть до границ отдельных волосков)
- Текст в маску: SAM 3, опубликованная с открытым исходным кодом в ноябре 2025 года, принимает текстовые prompt на уровне понятий вроде «все желтые такси» или «игроки в красных футболках» и возвращает маски для каждого совпадающего экземпляра (модель и код — на
github.com/facebookresearch, обзор — наai.meta.com) - Разделение объекта / фона: инструменты с открытым исходным кодом, такие как
rembg, разделяют объект и фон одной командой — область фона может напрямую служить маской «менять только фон»
Способ 5: Преобразуйте черно-белую маску в alpha-маску
Если у вас уже есть маска, где «черное = редактировать, белое = оставить»:Проверьте маску перед загрузкой
Многие ошибкиinvalid_image_file возникают из-за того, что у файла расширение .png, но есть только каналы RGB и нет alpha. Выполните эту проверку перед загрузкой:
Формы масок и как работает редактирование кистью
Маски могут иметь любую нерегулярную форму
Маска по своей сути — это bitmap на уровне отдельных пикселей, а не геометрическая форма: каждый пиксель хранит собственное значение alpha. Поэтому:- Прямоугольники и окружности — это лишь самые простые примеры
- Силуэт в форме человека, края прядей волос, произвольные штрихи кистью или несколько разрозненных участков — все это допустимо
- На практике большинство масок нерегулярны: они повторяют контур целевого объекта, слегка расширяясь
Как реализовано редактирование в стиле кисти
Взаимодействие «рисуете кистью там, где нужны изменения» в фото-приложениях на фронтенде на удивление простое: два наложенных слоя, где кисть «стирает» верхний слой в прозрачность.destination-out (новые штрихи «вырезают» существующие пиксели):
- Преобразование координат: canvas на странице обычно уменьшается через CSS; преобразуйте координаты штриха обратно с помощью
naturalWidth / clientWidth, иначе маска будет смещена - Отмена: делайте снимок с помощью
ctx.getImageData()перед каждым штрихом и восстанавливайте его с помощьюputImageData() - Расширение маски: пользователи обычно закрашивают только центр объекта — программно расширьте маску на несколько пикселей перед отправкой (кнопка «Expand Mask» в профессиональных инструментах); на стороне Python используйте
PIL.ImageFilter.MaxFilterилиcv2.dilateOpenCV - Полупрозрачный предпросмотр: рисуйте видимую пользователю подсветку (например, полупрозрачную красную) на отдельном слое предпросмотра, оставляя экспортируемый слой маски строго бинарным: непрозрачный/прозрачный
Дальше: маска по клику или тексту
Следующий шаг после рисования кистью — заменить «человеческие штрихи» на «инференс модели»:Несколько референсных изображений + маска
Типичный сценарий: замена наряда (первое изображение — человек, затем референсы стиля / ткани; маска отмечает область одежды):Строгое сохранение содержимого вне маски (постобработка на уровне пикселей)
Поскольку модель может слегка изменять содержимое вне маски, для сценариев, требующих пиксельной точности (фотографии товаров, макеты удостоверений, фиксированные скриншоты интерфейса), после генерации объедините область вне маски обратно из оригинала:Распространенные ошибки
invalid_image_file / Неверный файл изображения или режим
invalid_image_file / Неверный файл изображения или режим
Частые причины:
- Маска не является допустимым PNG, либо файл поврежден
- Расширение указывает PNG, но фактическое кодирование не PNG
- Ненормальный режим изображения (CMYK, режим palettе, отсутствует alpha)
- Неверный MIME type при загрузке
- Поток файла уже был использован или закрыт до запроса
Размеры изображения и маски не совпадают
Размеры изображения и маски не совпадают
Ошибкой считается даже разница в 1 пиксель. Исправление:
У черно-белой маски нет alpha-канала
У черно-белой маски нет alpha-канала
Режимов
RGB / L / P недостаточно — маска должна быть RGBA. Используйте «Способ 2» выше, чтобы преобразовать ее.Запрос на прозрачный фон завершается ошибкой
Запрос на прозрачный фон завершается ошибкой
Сама маска может содержать прозрачность (так вы отмечаете область редактирования), но Используйте
gpt-image-2 не поддерживает прозрачные фоны на выходе:"opaque" или "auto" для background; передача "transparent" возвращает ошибку.response_format=url не возвращает изображение
response_format=url не возвращает изображение
Модели GPT Image всегда возвращают Base64-данные;
response_format применяется только к устаревшему поведению DALL·E 2. Читайте результат через:Content-Type не multipart/form-data
Content-Type не multipart/form-data
Обычно это вызвано ручной установкой заголовка
Content-Type (из-за чего теряется boundary) либо тем, что промежуточный слой преобразует multipart-запрос в JSON перед пересылкой. Позвольте вашему HTTP-клиенту автоматически генерировать multipart-заголовки.Параметры размера
gpt-image-2 поддерживает гибкие размеры при соблюдении всех следующих условий:
1024x1024, 1536x1024, 1024x1536, 2048x2048, 2048x1152, 3840x2160, 2160x3840, auto. Квадратные изображения обычно генерируются быстрее.
Шаблон производственного запроса
Связанные страницы
Справка по API редактирования изображений
Полная справка по параметрам и интерактивная песочница
Обзор GPT-Image-2
Возможности модели, тарификация и примечания к версиям
Официальные ссылки (скопируйте в браузер):
- Страница модели:
developers.openai.com/api/docs/models/gpt-image-2 - Справка по API редактирования изображений:
developers.openai.com/api/reference/python/resources/images/methods/edit/ - Руководство по генерации изображений:
developers.openai.com/api/docs/guides/image-generation