Как создать зацикленный GIF с GPT Image 2.6 и проверить результат

Подготовьте запрос GIF в Image 2.6, сохраните анимацию, проверьте кадры и длительность. Разбираем ограничения API и ошибки без бесконечных повторных запросов.

Зоотроп повторяет движение оранжевой птицы на кольцевой ленте

GPT Image 2.6 поддерживает вывод анимированных GIF через эндпоинт генерации Images API. Укажите output_format: "gif", опишите короткое действие с возвращением в исходную позу и декодируйте полученный файл. Успешный ответ API — только первая проверка: в результате должны быть движущиеся кадры, подходящий темп и приемлемый переход от конца к началу.

Руководство подготовлено 5 ноября 2026 года по актуальной документации OpenAI. Запросы ниже основаны на документации; это не результаты платных испытаний модели, проведённых Ofox. Вспомогательные программы проверены локально на синтетических файлах, что не подтверждает качество генерации или доступ к API. Во время проверки Image 2.6 не было ни в публичном каталоге Ofox, ни в списке моделей нашего аккаунта. Поэтому примеры обращаются напрямую к OpenAI, а не через шлюз Ofox.

Начните с одного действия и понятного завершения

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

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

Create a looping animation of a small orange bird on a stationary branch
against a plain cream background. The bird raises its wings, pauses, then
lowers them to its starting pose. Keep the camera fixed, the branch still,
and the bird shape and colors consistent. No text. Make the transition
back to the start smooth.

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

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

Подберите параметры для нужного эндпоинта

ПараметрДиапазон или поведение по документацииНачальный вариант
model2.6 Flare или Sunburstgpt-image-2.6-flare
output_formatgif на эндпоинте генерацииgif
frame_count2–64; по умолчанию 99
frame_duration_ms20–2000 мс на кадр с округлением до 10 мс; по умолчанию 200200
sizeauto либо допустимые размеры, кратные 16auto
nЧисло результатов с учётом ограничений запроса1

Девять кадров по 200 миллисекунд задают цикл воспроизведения 9 × 200 / 1 000 = 1,8 секунды. Это длительность воспроизведения, а не время генерации. Проверьте возвращённый файл, а не предполагайте, что он в точности повторяет параметры запроса.

Размер кадра, число кадров и число результатов должны укладываться в ограничения модели и общий пиксельный бюджет запроса. Одной кратности сторон числу 16 недостаточно. Начните с auto; если API сообщает о превышении допустимого объёма изображения, уменьшите размеры, число кадров или результатов вместо повторной отправки того же запроса.

Не добавляйте в этот запрос stream, параметры промежуточных изображений, output_compression или prompt_rewriter. Текущее руководство указывает, что GIF-вывод не поддерживает эти функции. Эндпоинт редактирования изображений не возвращает GIF. Это особенно важно, если вы берёте за основу старый запрос для статичного изображения.

Отправьте один запрос и сохраните ответ

Понадобятся ключ прямого OpenAI API с настроенными доступом и оплатой, Python 3 и curl. Доступ в интерфейсе ChatGPT и доступ API-проекта проверяются отдельно. Перед генерацией прочитайте руководство по цене и доступу на английском, особенно различия между оценкой стоимости статичного изображения и расходами на GIF.

Скачайте архив с примерами. В нём находятся полный gif-request.json, пример SVG и программы для локальной проверки. Работайте в новой папке, чтобы не перезаписать предыдущий результат. Безопасно задайте OPENAI_API_KEY в оболочке; не вставляйте значение ключа в JSON и не добавляйте его в Git.

curl --fail-with-body --max-time 240 \
  https://api.openai.com/v1/images/generations \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @gif-request.json \
  --output gif-response.json

JSON из архива содержит запрос с птицей и параметры quality: "low", complexity: "low", size: "auto": один GIF, девять кадров по 200 мс. Это исходные настройки для проверки, а не доказанно оптимальная комбинация. OpenAI описывает Flare как вариант для более быстрой работы, а Sunburst — для задач с повышенными требованиями к деталям. Прежде чем делать вывод о качестве, сравните их на своей задаче.

Если curl завершился с ошибкой, сначала изучите сохранённый ответ. Локальный тайм-аут не доказывает, что сервер не выполнил работу: перед повторным платным запросом проверьте состояние запроса и активность аккаунта.

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

python3 decode_image.py gif-response.json bird.gif

Программа ищет data[0].b64_json, проверяет base64 и сигнатуру GIF, а также отказывается перезаписывать существующий файл. Для учёта расходов она выводит возвращённое поле usage, если оно есть. Отсутствие base64 означает, что нужно разобраться со структурой ответа, а не переименовывать произвольные данные в .gif.

Проверьте анимацию до публикации

Установите Pillow в виртуальное окружение и запустите программу проверки:

python3 -m venv .venv
source .venv/bin/activate
python -m pip install Pillow
python inspect_gif.py bird.gif

Она выводит размеры, число кадров, длительность каждого кадра, суммарное время воспроизведения и параметр повтора. В Pillow значение GIF-параметра loop, равное нулю, означает бесконечное повторение; отсутствие значения не подтверждает зацикливание. Один кадр не отвечает требованию анимации, даже если у файла правильная сигнатура GIF.

Программа также рассчитывает среднюю разницу RGB между первым и последним декодированными кадрами. Это диагностический показатель, а не оценка качества или порог приёмки. Два почти одинаковых кадра не исключают рывков между ними. У хорошего цикла крайние кадры тоже могут различаться: следующим после последнего идёт начало нового цикла.

Откройте GIF в браузере и просмотрите несколько повторений. Проверьте, не смещается ли ветка или камера, не меняется ли форма птицы, достигают ли крылья нужного положения и нет ли скачка при повторе. Оцените изображение в размере, в котором его будут показывать, а не только при увеличении. Убедитесь, что целевая площадка поддерживает анимированные GIF, и проверьте размер файла: при загрузке анимацию могут превратить в статичную картинку, пересжать или заменить другим форматом.

Для наглядного ориентира OpenAI публикует пример GIF с фонарём. Это пример OpenAI, а не результат нашего запроса с птицей и не подтверждение поддержки GIF шлюзом Ofox. Собственного результата генерации в этой серии у нас нет.

Исправляйте обнаруженную проблему по одному изменению

СимптомЧто проверить сначалаСледующий шаг
API отвергает формат выводаЭндпоинт и точный ID моделиИспользуйте описанный в документации эндпоинт генерации; проверьте доступ аккаунта
Ошибка проверки параметровНастройки, перенесённые из запроса для статичной картинкиУберите неподдерживаемые GIF-параметры и оставьте минимальный запрос
Превышен пиксельный бюджетЧисло кадров, размеры и n вместеУменьшите объём работы; изменение одной длительности кадра может не помочь
Скачанное изображение не двигаетсяФактическое число кадров и поведение площадкиПроверьте оригинал, прежде чем искать причину в загрузке или генерации
При повторе виден скачокКонечная поза, камера, промежуточные кадрыЗадайте одно обратимое движение и неподвижную сцену
Персонаж меняет формуЧисло действий и ограничений в запросеУпростите задание и сравните новую попытку
401, 429 или тайм-аутКлюч, лимиты аккаунта и подробности ответаСначала найдите причину; избегайте автоматических бесконечных повторов

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

Подготовьте принятый GIF к передаче

Сохраните исходный GIF, запрос без секретов, полученное usage, фактическое списание и краткую запись о проверке. Полезная запись выглядит так: «9 кадров, просмотрено в целевом размере, заметного движения камеры нет, повтор проверен на площадке». Она сообщает больше, чем «генерация прошла успешно».

Если нужны редактируемые фигуры, а не движение, используйте руководство по SVG в Image 2.6. Для более длинного ролика о товаре есть процесс подготовки раскадровки по фотографии товара на английском. Это другой результат: короткий GIF не равнозначен готовому смонтированному рекламному видео.

Перед интеграцией через Ofox проверьте текущую документацию моделей и руководство по лимитам запросов. Эта статья не утверждает, что вставка запроса в Ofox Chat выберет Image 2.6 или вернёт GIF.