GPT Image 2.6: как выделить объект и проверить результат правки

Подготовьте прозрачную разметку, отправьте запрос через Ofox API и проверьте изменения за пределами выбранного объекта. Два реальных результата, исходники и скрипты проверки.

Оранжевая заплатка в пяльцах показывает локальную правку внутри большого изображения

Чтобы направить правку GPT Image 2.6 с помощью обведённой области, передайте оригинал и отдельный прозрачный PNG с разметкой в endpoint редактирования Images, указав разметку в поле markup. Опишите изменение в промпте. Совместите разметку с оригиналом, а затем проверьте всю полученную картинку: правильно выбранный объект ещё не означает, что все пиксели за пределами выделения остались прежними.

Мы проверили этот способ через Ofox 6 ноября 2026 года. Два запроса использовали одну иллюстрацию с тремя кружками и один промпт. Менялось только положение красного эллипса: сначала вокруг левой, затем вокруг правой кружки. В результате оранжевыми стали разные кружки. Однако обе генерации изменили и пиксели вне цели. В статье есть исходники, реальные результаты, параметры запросов и локальные проверки, позволяющие рассмотреть эту разницу.

Скачайте пример до платного запроса

Скачать полный комплект для редактирования с разметкой. Внутри находятся исходные PNG и SVG, два прозрачных слоя разметки, два сгенерированных PNG, промпт, метаданные запросов и три вспомогательных Python-скрипта. Скачивание и локальный просмотр не вызывают API.

Исходную иллюстрацию мы создали специально для теста. Это не фотография товара клиента. Три бирюзовые дорожные кружки обозначены буквами A, B и C; на каждой написано A-17. Заголовок, фон, короткая линия внизу и оранжевая точка дают дополнительные области для проверки. Простые элементы помогают заметить неверно выбранный объект или изменение текста. Они не доказывают качество работы с лицами, украшениями, реальными товарными фотографиями или большими сериями.

Для локальных проверок нужны Python 3 и Pillow. В терминале перейдите в распакованную папку и создайте отдельное окружение:

python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install Pillow

Команды используют синтаксис оболочки macOS или Linux. В Windows активируйте виртуальное окружение командой для своей оболочки. Скрипту decode_edit.py достаточно стандартной библиотеки Python.

Выберите разметку, маску или точное совмещение слоёв

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

ТребованиеС чего начатьЧто проверить
Выбрать один из похожих объектовОтдельный слой разметки и конкретный промптПравильность цели, отсутствие разметки в результате, приемлемость остальных объектов
Направить локальную правку маской прозрачностиПроцесс с маскойИнтерпретацию маски и изменения вокруг неё
В точности сохранить утверждённый логотип или фонОставить оригинал и совместить принятую правку с ним в редактореГраницы слоёв, выравнивание и совпадение защищённых пикселей

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

Согласно руководству OpenAI по генерации изображений, markup поддерживается в Images API для редактирования Image 2.5 и 2.6; функция не является исключительной для 2.6. Разметка применяется к первому входному изображению и несовместима с mask и prompt_rewriter в одном запросе. Прозрачный PNG должен совпадать по размерам с оригиналом после исправления ориентации. Документированные ограничения — 16 777 216 пикселей для каждого изображения и 50 MB для файла разметки. Здесь используется оригинал 1024 × 1024 и значительно меньший файл разметки.

Экспортируйте разметку отдельным прозрачным файлом

В комплекте примера оригинал называется source.png, а разметка — markup-left.png. Для правой стороны есть markup-right.png. SVG — редактируемые исходники; именно их в API мы не отправляли.

Чтобы сделать свою разметку в редакторе со слоями:

  1. Откройте оригинал и сначала определите его ориентацию. Если редактор поворачивает фото по EXIF, экспортируйте рабочую копию в правильном положении до рисования.
  2. Добавьте прозрачный слой над оригиналом, сохранив размеры холста.
  3. Чётко обведите один объект. По возможности оставьте посторонние объекты вне круга и не закрывайте важный текст толстой линией.
  4. Скройте оригинал и экспортируйте только слой разметки в PNG. Сохраните весь холст, не обрезая его по границе рисунка.
  5. Снова откройте оригинал и разметку вместе, чтобы проверить совмещение. Храните оригинал отдельно, не заменяя его сведённой картинкой с нарисованным кругом.

Нарисованная шахматная сетка не означает прозрачность. Белый PNG с красным кругом тоже не является прозрачным слоем. Нужен альфа-канал с действительно прозрачными пикселями фона. Один только вид предпросмотра этого не подтверждает.

Запустите локальную проверку из комплекта:

python3 preflight.py source.png markup-left.png

Для нашего файла она возвращает passed: true, размер [1024, 1024] и диапазон альфа-канала [0, 255]. Скрипт отклоняет непрозрачный слой, пустой полностью прозрачный слой, несовпадающие размеры и JPEG. Все четыре отрицательных случая проверены локально. Успешная проверка подтверждает лишь основные свойства файла, но не доступ к модели, правильное положение круга или удачную правку.

Задайте одно изменение и перечислите сохраняемые детали

Точный промпт обоих запросов приведён ниже. Он также находится в файле prompt.txt:

Change only the body of the travel mug inside the red ellipse to warm orange. Keep its dark lid, handle geometry, cream A-17 label and label text unchanged. Keep the other two mugs, their colors, the A B C headings, FIELD / 03 title, background, bottom line and small orange dot unchanged. The red ellipse is an editing annotation: do not draw it in the final image. Keep the original framing and flat illustration style.

В промпте нет слов «слева» и «справа»: положение цели задаётся разметкой. Корпус кружки отделён от крышки, геометрии ручки и этикетки. Отдельно сказано не рисовать красный эллипс в итоговой картинке. Также требуется сохранить остальные кружки и их цвета, буквы A/B/C, заголовок FIELD / 03, фон, нижнюю линию, точку, кадрирование и плоский стиль иллюстрации.

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

В руководстве по промптам для изображений описаны точечные правки и настройки отдельных моделей. Для этой небольшой задачи мы задали quality=medium и complexity=low, не передавая input_fidelity. Это условия нашего теста, а не универсально оптимальная настройка для любого изображения.

Отправьте запрос через Ofox

Мы проверили endpoint https://api.ofox.ai/v1/images/edits с идентификатором модели Ofox openai/gpt-image-2.6-flare. Название модели при прямом подключении к поставщику может отличаться от ID в шлюзе. Перед заменой сверяйтесь с документацией Ofox Images API и списком моделей, доступных вашему аккаунту.

Следующая команда использует файлы примера и расходует средства аккаунта. Безопасно задайте OFOX_API_KEY в локальном окружении. Не помещайте ключ в статью, распространяемые файлы или общий блокнот.

curl --fail-with-body --silent --show-error \
  https://api.ofox.ai/v1/images/edits \
  -H "Authorization: Bearer ${OFOX_API_KEY:?Set OFOX_API_KEY first}" \
  -F 'model=openai/gpt-image-2.6-flare' \
  -F 'image=@source.png;type=image/png' \
  -F 'markup=@markup-left.png;type=image/png' \
  -F 'prompt=<prompt.txt' \
  -F 'size=1024x1024' \
  -F 'quality=medium' \
  -F 'complexity=low' \
  -F 'n=1' \
  -F 'output_format=png' \
  -o response.json

Пусть curl самостоятельно задаст multipart Content-Type и boundary. Не добавляйте вручную заголовок Content-Type: multipart/form-data без boundary. В синтаксисе форм curl выражение prompt=<prompt.txt читает содержимое файла в поле prompt, а не отправляет имя файла как текст инструкции.

Если curl завершился успешно, декодируйте ответ и проверьте его:

python3 decode_edit.py response.json my-left-result.png
python3 inspect_edit.py source.png my-left-result.png

Декодер проверяет ответ на ошибку и сигнатуру PNG, а также отказывается перезаписывать существующий выходной файл. Скрипт сравнения рассчитан на пример 1024 × 1024 и фиксированные координаты участков. Для собственной фотографии замените координаты на осмысленные защищаемые области; не переносите координаты кружек без изменений.

Для повторения эксперимента с правой целью замените только markup-left.png на markup-right.png, оставив source.png, и задайте новые имена для ответа и результата. Каждый вызов платный. Не используйте левый результат как вход второго запроса: тогда изменится исходная картинка, и это будет уже другое сравнение.

Что показывают два реальных результата

Локальный отчёт в браузере: оригинал, правка слева, правка справа и различия пикселей за пределами цели

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

НаблюдениеРазметка слеваРазметка справа
Видимая правкаКорпус кружки A стал оранжевымКорпус кружки C стал оранжевым
HTTP-ответ200200
Выходной файлPNG 1024 × 1024PNG 1024 × 1024
Время на стороне клиента, включая сеть11,566 секунды10,229 секунды
Возвращённые входные / выходные токены1 286 / 1 4491 265 / 1 449
Красная разметка осталась в результатеНетНет

На каждую цель пришлось по одному вызову, без повторов. Эти значения времени — отдельные наблюдения, а не тест скорости и не обещание задержки сервиса. При одинаковом промпте входные токены различались; причина этим тестом не установлена. Мы не проверяли Sunburst и не сравнивали поставщиков.

Этикетки остаются читаемыми, нужная кружка меняет цвет в обоих случаях. Но сгенерированные изображения добавляют лёгкую текстуру и тени. Остальные кружки по-прежнему выглядят бирюзовыми, хотя их RGB-значения не совпадают с оригиналом. Откройте оригинал, левый результат и правый результат в полном разрешении, не ограничиваясь уменьшенным скриншотом.

Локальный скрипт сравнивает участки с одинаковыми координатами без масштабирования. Он вычисляет среднюю абсолютную разницу по RGB-каналам со значениями от 0 до 255:

УчастокЛевый результатПравый результат
Корпус средней кружки, не выбранной ни в одном запросе11,86610,925
Область заголовка3,1413,890
Короткая линия внизу1,8531,527

Это различия пикселей, а не оценки качества или универсальные пороги приёмки. Все пять исследованных участков, включая области целевых кружек из скачиваемого отчёта, отличаются от оригинала. Значит, эти результаты не являются точными копиями даже вне обведённого объекта. Измерены не все защищаемые пиксели; сами значения не определяют, неприемлемо ли изменение для вашей задачи.

Принимайте результат по требованиям к готовому материалу

Перед передачей изображения проверьте три вещи отдельно:

  • Выбор: изменился нужный объект, соседний не получил такое же оранжевое окрашивание, разметка исчезла.
  • Содержание: этикетки, числа, брендинг и заданная геометрия верны. В этом примере прочитайте каждое A-17, а не только крупные A/B/C.
  • Сохранение: допустимы ли небольшие сдвиги цвета и текстуры? Если нужна точная идентичность, проверяйте пиксели защищённых участков и оставляйте исходные слои для совмещения.

Храните вместе оригинал, разметку, промпт, ID модели, настройки, результат и заметки о приёмке. При доработке устраняйте одну причину ошибки за раз. Неверно расположенный круг требует новой разметки; правильная цель при чрезмерной смене стиля — более конкретного требования сохранить детали или другого процесса редактирования. Повторная генерация без диагностики делает сравнение менее полезным.

Попробуйте задачу в Ofox Chat

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

Image 2.6 доступен в Ofox Chat, но два теста этой статьи выполнены через API. Мы не проверяли элемент управления Chat, который передаёт отдельный прозрачный слой именно как поле markup. Загрузка размеченного референса в разговор не доказывает использование тех же полей или параметров. Для точного воспроизведения запроса с двумя файлами используйте описанные выше шаги API.

Разделяйте проблемы файла, запроса и результата

СимптомЧто проверить сначалаЧто делать дальше
Разметка отклонена или размеры различаютсяОриентацию и холстИсправить ориентацию, экспортировать одинаковые размеры, повторить предварительную проверку
Белый прямоугольник закрывает изображениеАльфа-канал разметкиСкрыть оригинал и фон, экспортировать только прозрачный слой рисунка
Пустая разметка незаметна при просмотреАльфа-канал и видимую линиюОткрыть на контрастном фоне; скрипт отклоняет полностью прозрачный файл
Меняется не тот объектСовмещение и неоднозначность кругаПросмотреть слои вместе, выбрать одну цель, сохранить исходный вход
В результате виден красный кругСведённый оригинал или неясный промптОтправить оригинал отдельно и явно запретить рисовать разметку
Ошибка после копирования примера с маскойКонфликтующие поляУбрать mask и prompt_rewriter из запроса с markup
Модель не найдена или доступ запрещёнТочный ID и тело ответаПроверить доступность и ключ, не перебирать случайные названия
Успешный ответ без пригодного PNGОшибку в JSON или отсутствие данных изображенияПроверить JSON до декодирования и сохранить для диагностики
Непреднамеренно меняются другие объекты или этикеткиСравнение в полном разрешенииОтклонить неприемлемое изменение, уточнить одну инструкцию или совместить правку с защищёнными исходными слоями
Тайм-аут или ограничение частотыОтвет, статус и лимиты аккаунтаДо повтора проверить завершение запроса; новые вызовы могут увеличить расходы

Для вопросов о формате вывода, а не локальной правке, смотрите руководство по GIF в Image 2.6 и процесс работы с SVG. Это другие результаты со своими ограничениями endpoint и правилами проверки. Контекст доступа и оплаты есть в обзоре Image 2.6 API (на английском). Приведённые токены не означают фиксированную цену одной правки.