Skip to Content
МоделиGPT ImageИнпейнтинг

Инпейнтинг

Отметьте область маской и перерисуйте только её; всё остальное останется без изменений.

Перед началом

Что нужноПодробности
API-ключСоздайте его в консоли OfoxAI  и замените YOUR_OFOX_API_KEY в коде
ОкружениеДля cURL нужен jq для декодирования изображения; для Python — pip install openai, а также pip install pillow для создания маски; для Node.js — версия 18 или выше, без зависимостей
ИзображенияПоместите в текущий каталог input.png и mask.png одинакового размера. Маски ещё нет? Шаг 1 ниже показывает, как её сделать
ТаймаутУстановите таймаут клиента 600 секунд. Высокое качество, большие размеры или редактирование могут занимать несколько минут
Значения, используемые в коде
Адрес APIhttps://api.ofox.ai/v1
ID моделиopenai/gpt-image-2.5-flare
API-ключЗамените YOUR_OFOX_API_KEY в коде на свой ключ
Зависимости Pythonpip install openai pillowpillow используется для создания маски

Требования к маске

Оригинал
+
Маскацентр прозрачный, остальное непрозрачное
→
Результатперерисовывается только прозрачная область

Иллюстрация, а не реальный результат генерации

  • PNG с альфа-каналом. JPEG и непрозрачный PNG не подходят.
  • Точно такой же размер, как у исходного изображения.
  • Прозрачные пиксели перерисовываются; непрозрачные сохраняют оригинал.
  • Работает только на эндпоинте редактирования. При отправке на генерацию по тексту игнорируется.

Шаги

Создайте маску

Пропустите этот шаг, если маска у вас уже есть.

Этот фрагмент читает input.png из текущего каталога, делает прозрачным центральный квадрат размером 40% и сохраняет результат как mask.png.

make_mask.py
from PIL import Image, ImageDraw src = Image.open("input.png") mask = Image.new("RGBA", src.size, (0, 0, 0, 255)) # полностью непрозрачно = сохранить всё w, h = src.size ImageDraw.Draw(mask).rectangle( # прозрачная область = то, что перерисовывается (int(w * 0.3), int(h * 0.3), int(w * 0.7), int(h * 0.7)), fill=(0, 0, 0, 0) ) mask.save("mask.png")

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

Каждый пример ниже был запущен в неизменном виде. Результат сохраняется в файл output.png в текущем каталоге.

Terminal
# mask.png: того же размера, что input.png, с альфа-каналом; прозрачная область = то, что перерисовывается curl -s https://api.ofox.ai/v1/images/edits \ -H "Authorization: Bearer YOUR_OFOX_API_KEY" \ -F "model=openai/gpt-image-2.5-flare" \ -F "image=@input.png" \ -F "mask=@mask.png" \ -F "prompt=An orange cat sitting in the center, background and everything else unchanged" \ -F "quality=low" \ -o response.json jq -r '.data[0].b64_json' response.json | base64 --decode > output.png

Как писать промпт

Описывайте всё изображение таким, каким оно должно стать, а не только то, что нужно добавить.

ПромптРезультат по замерам
✅Рыжая кошка сидит в центре, фон и всё остальное без измененийКошка в центре; остальное без изменений
❌Нарисуй кошку в прозрачной областиМодель восприняла «прозрачное» как содержимое и нарисовала фон в шахматную клетку

Результат по замерам

За пределами маски изображение почти не меняется: среднее отличие пикселей от оригинала — менее 2/255.

Для сравнения: при редактировании того же изображения без маски та же область изменилась на 120/255.

Устранение неполадок

СимптомПричинаРешение
Ошибка Invalid image file or modeМаска не является PNG с альфа-каналомСоздайте её заново с помощью кода из шага 1 выше
Изменилось всё изображениеМаска не сработала: она была отправлена на эндпоинт генерации по тексту или полностью непрозрачнаУбедитесь, что вызываете /v1/images/edits и что в маске есть прозрачная область
Появился фон в шахматную клеткуВ промпте упоминалась «прозрачная область»Описывайте всё изображение, как в разделе Как писать промпт

Другие ошибки см. в полной таблице ошибок.

Официальная документация

Документация OpenAI описывает поведение при прямом обращении к OpenAI. При вызове через OfoxAI приоритет имеют результаты замеров из этого раздела. Например, для редактирования не нужно закреплять провайдера.

Last updated on