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 мы не отправляли.
Чтобы сделать свою разметку в редакторе со слоями:
- Откройте оригинал и сначала определите его ориентацию. Если редактор поворачивает фото по EXIF, экспортируйте рабочую копию в правильном положении до рисования.
- Добавьте прозрачный слой над оригиналом, сохранив размеры холста.
- Чётко обведите один объект. По возможности оставьте посторонние объекты вне круга и не закрывайте важный текст толстой линией.
- Скройте оригинал и экспортируйте только слой разметки в PNG. Сохраните весь холст, не обрезая его по границе рисунка.
- Снова откройте оригинал и разметку вместе, чтобы проверить совмещение. Храните оригинал отдельно, не заменяя его сведённой картинкой с нарисованным кругом.
Нарисованная шахматная сетка не означает прозрачность. Белый 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-ответ | 200 | 200 |
| Выходной файл | PNG 1024 × 1024 | PNG 1024 × 1024 |
| Время на стороне клиента, включая сеть | 11,566 секунды | 10,229 секунды |
| Возвращённые входные / выходные токены | 1 286 / 1 449 | 1 265 / 1 449 |
| Красная разметка осталась в результате | Нет | Нет |
На каждую цель пришлось по одному вызову, без повторов. Эти значения времени — отдельные наблюдения, а не тест скорости и не обещание задержки сервиса. При одинаковом промпте входные токены различались; причина этим тестом не установлена. Мы не проверяли Sunburst и не сравнивали поставщиков.
Этикетки остаются читаемыми, нужная кружка меняет цвет в обоих случаях. Но сгенерированные изображения добавляют лёгкую текстуру и тени. Остальные кружки по-прежнему выглядят бирюзовыми, хотя их RGB-значения не совпадают с оригиналом. Откройте оригинал, левый результат и правый результат в полном разрешении, не ограничиваясь уменьшенным скриншотом.
Локальный скрипт сравнивает участки с одинаковыми координатами без масштабирования. Он вычисляет среднюю абсолютную разницу по RGB-каналам со значениями от 0 до 255:
| Участок | Левый результат | Правый результат |
|---|---|---|
| Корпус средней кружки, не выбранной ни в одном запросе | 11,866 | 10,925 |
| Область заголовка | 3,141 | 3,890 |
| Короткая линия внизу | 1,853 | 1,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 (на английском). Приведённые токены не означают фиксированную цену одной правки.


