Skip to main content
Эта страница — практическое руководство по локализованному редактированию (inpainting) с gpt-image-2 через POST /v1/images/edits, путем загрузки изображение + маску + prompt. Для полного справочника параметров и интерактивного Playground см. Image Edit API Reference.

Основной принцип: альфа-канал определяет область редактирования

Запрос на локализованное редактирование состоит из трех частей:
Маска отмечает редактируемые области через канал alpha (прозрачности) PNG:
Самая распространенная ошибка: область редактирования определяет именно альфа-канал, а не черные или белые пиксели, которые вы видите.
PNG, который «выглядит черно-белым», но не имеет альфа-канала, завершится ошибкой invalid_image_file.

Визуальный пример

Предположим, исходное изображение имеет размер 1024×1024:
С таким prompt:

Маска — это не жесткая обрезка

Маски GPT Image — это не абсолютные ограничения на уровне пикселей, как выделения в Photoshop. Официально редактирование маски по-прежнему остается prompt-guided editing: модель использует маску как ориентир, но не гарантирует строгое соблюдение каждой границы пикселя. Поэтому вы можете увидеть:
  • Незначительные изменения теней вне маски
  • Выход границ объекта за пределы маски
  • Согласованные изменения освещения и отражений
  • Небольшую перерисовку фона
  • Эффекты перехода у границ маски
Это хорошо подходит для естественного смешивания, но не годится, когда требуется пиксель-в-пиксельное сохранение (см. «Строгое сохранение содержимого вне маски» ниже).

Повышение стабильности редактирования

Не пишите просто: «измените это на красную рубашку». Вместо этого пишите так:
Практические советы:
  1. Сделайте маску немного больше, чем границы целевого объекта
  2. Не закрывайте только центр объекта — включите края, тени и отражения
  3. Явно укажите, что должно остаться без изменений
  4. Если область редактирования слишком мала, увеличьте маску
  5. Когда требуется абсолютное сохранение, выполните финальное покадровое совмещение самостоятельно (см. ниже)

Маска или не маска? Компромиссы против редактирования только prompt

Частый вопрос: современный AI уже может «редактировать именно то, на что вы указываете» на обычном языке — зачем вообще делать маску? Это правда: gpt-image-2 без маски, имея только «замени чашку слева на столе цветами», обычно правит нужное место — следование инструкциям работает хорошо, и для несложных правок одного prompt обычно достаточно. Но маска решает случаи, когда язык двусмысленен или однозначен, но все еще недостаточно надежен: Исследования указывают на то же самое: безмасочное (чисто текстовое) редактирование испытывает трудности с точным пространственным контролем — методы в стиле prompt-to-prompt, например, не могут пространственно переместить объект по кадру, а когда неявная область редактирования задана неверно, получается «должна была измениться не та часть, а изменилась не та, что не должна была». Редактирование с маской жертвует немного удобства ради явной пространственной точности.
Если в одной фразе: маска — не устаревшая технология, а инструмент точного контроля. Неформальные правки в стиле чата → достаточно одного prompt; производственные сценарии, где нужны воспроизводимость, управляемость и строгие границы → используйте маску. Также помните: редактирование только prompt с gpt-image-2 по сути является полной перегенерацией изображения, поэтому могут измениться и неуказанные области — именно поэтому и существует маска + пиксельное композитирование.

Требования к файлам с первого взгляда

Назначение ролей при редактировании с несколькими изображениями:
«Точное совпадение размеров» звучит утомительно, но вам не нужно выравнивать размеры вручную — маски выводятся из исходного изображения (путем стирания / кисти / сегментации на его копии), поэтому совпадение размеров получается автоматически. См. Откуда берутся маски ниже.

Пример на Python

Не передавайте input_fidelity="high"gpt-image-2 по умолчанию всегда обрабатывает входные изображения с высокой точностью. API не позволяет настраивать этот параметр; его передача возвращает ошибку 400. Просто опустите его.

Пример cURL

Эндпоинт редактирования изображений требует multipart/form-data — вы не можете отправить изображение и маску как обычные JSON-поля:
Даже при одном изображении используйте имя поля image[], как в официальных примерах.
При использовании -F, не задавайте вручную -H "Content-Type: multipart/form-data". curl должен автоматически сгенерировать boundary; при ручной установке заголовка boundary boundary теряется, и сервер не может разобрать файлы.

Пример на Node.js

Откуда берутся маски? Пять распространенных способов

Маски часто кажутся пугающими — «они должны в точности совпадать с исходным изображением пиксель в пиксель». Ключевая мысль: вы почти никогда не рисуете маску с нуля; вы выводите ее из исходного изображения. Будь то код, фоторедактор или веб-Canvas, процесс всегда один: «открыть оригинал → отметить на нем области → экспортировать», поэтому совпадение размеров происходит автоматически.

Способ 1: Сгенерируйте прозрачную маску программно

Сделайте прямоугольную область прозрачной (редактируемой):
  • (255, 255, 255, 255) = непрозрачная, сохраняемая область
  • (0, 0, 0, 0) = прозрачная, редактируемая область

Способ 2: Ручное стирание в фоторедакторе

Любой редактор, который поддерживает прозрачные PNG (Photoshop, GIMP, Krita, Photopea и т. д.), может создать маску — все сводится к одному действию: сотрите область, которую нужно редактировать, чтобы она стала прозрачной. В Photoshop:
  1. Откройте копию исходного изображения (работа с самим оригиналом гарантирует совпадение размеров)
  2. Если слой заблокирован как «Фон», дважды щелкните его, чтобы преобразовать в обычный слой (слои фона не поддерживают прозрачность)
  3. Выделите область для изменения с помощью инструмента Lasso / Quick Selection / Object Selection
  4. Нажмите Delete — выделение станет прозрачной шахматной сеткой
  5. Выберите «Экспортировать как PNG» (с включенной прозрачностью) — получится корректная alpha-маска
Тот же принцип в GIMP: Layer → Transparency → Add Alpha Channel, выделите, Delete, экспортируйте как PNG.
Фигуры вовсе не ограничиваются прямоугольниками — обведите объект лассо или выберите объект одним щелчком с помощью smart selection, и удаленная прозрачная область может принять любую неправильную форму. Расширьте выделение на несколько пикселей за контур объекта (Photoshop: Select → Modify → Expand), чтобы захватить тени и края тоже.

Способ 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» ниже. Расширение сообщества Stable Diffusion Inpaint Anything и Mask Editor в ComfyUI — зрелые реализации именно этого конвейера — «SAM segmentation + доработка кистью → маска → inpaint» — и их стоит взять на вооружение.

Способ 5: Преобразуйте черно-белую маску в alpha-маску

Если у вас уже есть маска, где «черное = редактировать, белое = оставить»:

Проверьте маску перед загрузкой

Многие ошибки invalid_image_file возникают из-за того, что у файла расширение .png, но есть только каналы RGB и нет alpha. Выполните эту проверку перед загрузкой:

Формы масок и как работает редактирование кистью

Маски могут иметь любую нерегулярную форму

Маска по своей сути — это bitmap на уровне отдельных пикселей, а не геометрическая форма: каждый пиксель хранит собственное значение alpha. Поэтому:
  • Прямоугольники и окружности — это лишь самые простые примеры
  • Силуэт в форме человека, края прядей волос, произвольные штрихи кистью или несколько разрозненных участков — все это допустимо
  • На практике большинство масок нерегулярны: они повторяют контур целевого объекта, слегка расширяясь
Единственный «совет по форме» касается результата, а не правил: прозрачная область должна полностью покрывать объект вместе с его краями, тенями и отражениями. Лучше заложить запас, чтобы у модели было пространство для естественного смешивания.

Как реализовано редактирование в стиле кисти

Взаимодействие «рисуете кистью там, где нужны изменения» в фото-приложениях на фронтенде на удивление простое: два наложенных слоя, где кисть «стирает» верхний слой в прозрачность.
Основа сводится к одной строке — задайте режим композиции canvas на destination-out (новые штрихи «вырезают» существующие пиксели):
Здесь важны инженерные детали:
  1. Преобразование координат: canvas на странице обычно уменьшается через CSS; преобразуйте координаты штриха обратно с помощью naturalWidth / clientWidth, иначе маска будет смещена
  2. Отмена: делайте снимок с помощью ctx.getImageData() перед каждым штрихом и восстанавливайте его с помощью putImageData()
  3. Расширение маски: пользователи обычно закрашивают только центр объекта — программно расширьте маску на несколько пикселей перед отправкой (кнопка «Expand Mask» в профессиональных инструментах); на стороне Python используйте PIL.ImageFilter.MaxFilter или cv2.dilate OpenCV
  4. Полупрозрачный предпросмотр: рисуйте видимую пользователю подсветку (например, полупрозрачную красную) на отдельном слое предпросмотра, оставляя экспортируемый слой маски строго бинарным: непрозрачный/прозрачный

Дальше: маска по клику или тексту

Следующий шаг после рисования кистью — заменить «человеческие штрихи» на «инференс модели»:
Именно так работают Inpaint Anything и Mask Editor в ComfyUI: сегментация отвечает за точность, кисть — за исправления — сначала автоматически сгенерируйте точную маску, а затем донастройте ее добавлением или обрезкой штрихов кисти. Для собственного продукта лучшим с точки зрения UX сочетанием сейчас является развертывание SAM как backend-сервиса при сохранении canvas для кисти в качестве fallback.

Несколько референсных изображений + маска

Типичный сценарий: замена наряда (первое изображение — человек, затем референсы стиля / ткани; маска отмечает область одежды):
При нескольких изображениях промпт должен четко описывать роль каждого изображения (первое = субъект, второе = референс стиля, третье = референс ткани); иначе модель может их перепутать.

Строгое сохранение содержимого вне маски (постобработка на уровне пикселей)

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

Распространенные ошибки

Частые причины:
  • Маска не является допустимым PNG, либо файл поврежден
  • Расширение указывает PNG, но фактическое кодирование не PNG
  • Ненормальный режим изображения (CMYK, режим palettе, отсутствует alpha)
  • Неверный MIME type при загрузке
  • Поток файла уже был использован или закрыт до запроса
Повторное кодирование исправляет большинство случаев:
Ошибкой считается даже разница в 1 пиксель. Исправление:
Режимов RGB / L / P недостаточно — маска должна быть RGBA. Используйте «Способ 2» выше, чтобы преобразовать ее.
Сама маска может содержать прозрачность (так вы отмечаете область редактирования), но gpt-image-2 не поддерживает прозрачные фоны на выходе:
Используйте "opaque" или "auto" для background; передача "transparent" возвращает ошибку.
Модели GPT Image всегда возвращают Base64-данные; response_format применяется только к устаревшему поведению DALL·E 2. Читайте результат через:
Обычно это вызвано ручной установкой заголовка 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