Перейти к основному контенту

API расширения кадра: из фото товара — рекламные форматы

Один вызов превращает квадратное фото в баннер 16:9 или сторис 9:16 за $0.024: размеры результата, какая часть фото перерисовывается и рабочий скрипт API.

Автор
Lydia
Опубликовано
Время чтения
10 мин чтения
Обновлено
Крупный план мужчины в оливковой куртке на приморском утесе на закате, с двумя вставленными рамками, показывающими одну сцену в вертикали и в горизонтали

Image Expander в SpicyAPI (spicyapi.ai) — быстрый способ получить из квадратного фото товара горизонтальный баннер и вертикальный сторис: вы отправляете одно изображение и одно соотношение сторон, а он возвращает фото, помещённое в более крупный кадр, с новой сценой по краям. Стоимость — $0.024 за изображение при любом соотношении, промпт и маска не нужны, длинная сторона результата всегда 1536 px. Нюанс в том, что он частично перерисовывает и само фото, поэтому подходит для фонов, а не для точных деталей товара. Для пиксельно точной упаковки нужно вернуть оригинал поверх. Если вам важно контролировать, что именно дорисовывается, сгенерируйте сцену в новом соотношении моделью редактирования изображений на основе промпта; руководство по переводу фото товара в рекламные макеты делает это для тех же трёх форматов.

Кадрировать, собрать макет или расширить

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

Размеры результата для семи соотношений

Длинная сторона всегда 1536 px, короткая следует из соотношения. Задача — spicyapi/image-expander-v1/edit, и она поддерживает эти значения:

СоотношениеРезультатТипичное применение
1:11536 × 1536Пост в ленте, плитка маркетплейса
4:31536 × 1152Слайд, презентация
3:41152 × 1536Вертикальный пост в ленте
3:21536 × 1024Горизонтальный кадр в печатном стиле, баннер
2:31024 × 1536Вертикальный кадр в печатном стиле, pin
16:91536 × 864Шапка сайта, обложка видео
9:16864 × 1536Сторис, reel

Для планирования важны два следствия. Первое: 4:5 и 1.91:1 не предлагаются — возьмите 3:4 и срежьте 96 px по высоте, чтобы получить 4:5 (1152 × 1440), или возьмите 16:9 и срежьте около 60 px для 1.91:1 (1536 × 804). Второе: исходник масштабируется по размеру, поэтому результат 16:9 из квадратного фото показывает товар высотой не более 864 px, каким бы крупным ни был оригинал. Если нужно больше пикселей, увеличьте готовый файл по процессу из руководства по увеличению разрешения, а не начинайте с исходника пониже качеством.

Схема: квадратный исходник и горизонтальная и вертикальная рамки, в каждой зарезервированы зона под товар и зона под заголовок.
Оставьте место под товар и заголовок в каждой целевой рамке.

Сколько новой сцены требует каждый скачок

Фото масштабируется одним коэффициентом, чтобы поместиться в целевой холст; всё остальное дорисовывается. Для квадрата 1200 × 1200 коэффициент равен 0.72 и для 16:9, и для 9:16, поэтому в центре кадра остаётся фото 864 × 864 и 672 px новой сцены (44% холста). Превратить фото 16:9 в 9:16 намного труднее: фото уменьшается до 864 × 486, а 68% кадра выдумывается.

Схема: исходник 1200 × 1200, масштабированный в 0.72 до 864 × 864, по центру кадра 1536 × 864 и кадра 864 × 1536, с 672 px нового пространства в каждом.
Схематично: реальное фото оказывается немного не по центру.

Большие скачки тоже работают. Один опубликованный пример превращает портрет на террасе 1280 × 720 в сторис-кадр 864 × 1536 во всю длину, а остаток платья, плитку пола и небо дорисовывает:

Исходное фото для примера с террасой: женщина в кремовом пальто на каменной террасе с лимонными деревьями и морем за спиной, 1280 × 720.
Исходник, 1280 × 720 (16:9)
Результат Image Expander для примера с террасой: та же сцена в вертикальном кадре 864 × 1536 во всю длину с дополнительным небом сверху и плиткой снизу.
Результат в 9:16, 864 × 1536

Другой пример идёт в обратную сторону: плотный портрет 2:3 превращается в шапку 1536 × 864, где тёмная стена продолжается с обеих сторон, — это ровно то место под заголовок, которое нужно баннеру.

Результат Image Expander для примера с портретом: плотный портрет женщины в тёмной комнате, расширенный до горизонтального кадра 1536 × 864 с тёмной стеной по обе стороны.
Результат в 16:9, 1536 × 864 (исходником был портрет 1067 × 1600)

Что модель делает с вашим фото

Опубликованные примеры Image Expander показывают три вещи, которые определяют, как вы будете использовать результат:

  1. Фото масштабируется по размеру, а не прикрепляется к краю. В результате с террасой оно находится в 462 px от верхнего края и в 588 px от нижнего; в результате с портретом — в 453 px от левого и в 507 px от правого. В обоих случаях фото лежит немного не по центру, поэтому не рассчитывайте на точное центрирование, и сдвинуть его нельзя: поля привязки и отступов нет. Размещайте текстовые зоны там, где по бокам остаётся место, или сдвиньте товар, обрезав противоположную сторону результата.
  2. Само фото частично перерисовывается. В результате с террасой лицо, волосы, лимонная листва и балясины справа отличаются от исходника (среднее изменение пикселей внутри исходной области — 30 из 255, включая различия передискретизации и сжатия). Сцена читается как тот же кадр, но мелкие детали генерируются заново.
  3. Края — слабое место. Небо, студийный фон, штукатурка и песок продолжаются лучше всего. Лицо, рука или надпись, срезанные границей, приходится выдумывать.

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

Схема: четыре слоя — расширенная сцена, вырезанный оригинальный товар, контактная тень, редактируемый заголовок.
Наложите оригинальный товар поверх расширенной сцены.
Иллюстрация: флакон духов в трёх композиционных концепциях для разных мест размещения. Панели показывают изменение окружающего пространства и кадрирования; это не результаты Image Expander.
Иллюстрация трёх композиционных концепций для разных мест размещения; это не вывод Image Expander.

Выберите исходник, который хорошо расширяется

  • Оставьте запас вокруг товара и держите его подальше от границы, от которой он будет расти. Полный товар с пустым местом рядом расширяется надёжнее, чем плотный кроп.
  • Предпочитайте простые окружения: бесшовный фон, оштукатуренная стена, небо, столешница с одной чёткой линией горизонта. Повторяющиеся узоры вроде плитки или полос могут сбить фазу на стыке.
  • Берите ближайшее соотношение. Если маркетплейсу нужно 5:4, берите от 1:1 или от 4:3, а не от исходника 9:16.

Сначала попробуйте в Playground

  1. Откройте страницу задачи Image Expander и оставайтесь на вкладке Playground в представлении Form. Войдите в аккаунт с балансом, чтобы запустить выполнение.
  2. В поле Input image перетащите фото или используйте Asset URL для прямой ссылки (JPG, PNG или WebP, до 10 MB).
  3. Выберите соотношение в поле Aspect ratio (не Auto — API его не принимает) под нужное место размещения, например 16:9 для шапки или 9:16 для сторис. Output format по умолчанию PNG; выберите JPEG или WebP для меньших файлов.
  4. Проверьте оценку цены и запустите. Сначала испробуйте нужные соотношения на самом сложном исходнике: плохой стык здесь будет плохим и через API.

Тело запроса под формой — это тот же JSON, который принимает API, поэтому рабочую здесь настройку можно перенести в код напрямую.

Затем вызовите его из кода

Установите Python SDK (pip install spicyapi), задайте SPICY_API_KEY в окружении и выполните по одному вызову на каждый исходник и соотношение:

python
import uuid

from spicyapi import SpicyClient, output_assets

client = SpicyClient()  # reads SPICY_API_KEY from the environment

photo = client.upload_file("./product-square.png")  # local files become spicy:// URIs

task = client.create_task(
    model="spicyapi/image-expander-v1/edit",
    input_data={"image_url": photo["uri"], "aspect_ratio": "9:16", "output_format": "png"},
    idempotency_key=str(uuid.uuid4()),  # new key per new request; reuse only to retry the same one
)

final = client.wait_for_terminal(task["taskId"])
if final["state"] != "succeeded":
    raise RuntimeError(f"Task {task['taskId']} ended as {final['state']}")

print(output_assets(final)[0]["url"])  # copy it to your own storage now

Загрузка, ожидание, ошибки и повторы описаны в справочнике Python SDK и руководстве по асинхронным задачам. Меняйте aspect_ratio и ключ идемпотентности для каждого дополнительного формата; оплачивается только успешно завершённая задача.

Или поручите запуск агенту

Если форматы должен производить за вас ассистент, дайте ему CLI или MCP-сервер. Оба показывают цену и запрашивают подтверждение перед платным вызовом. Skill добавляет инструкции поверх любого из них.

  • CLI. spicyapi выполняет одну задачу из терминала или скрипта (npx @spicyapi/cli работает без установки):

``bash spicyapi files upload ./product-square.png # prints a spicy:// URI spicyapi tasks create --model spicyapi/image-expander-v1/edit \ --input-file input.json --idempotency-key product-square-9x16-v1 --wait ``

В input.json лежит тот же объект input, что выше, с URI вида spicy://.

  • MCP-сервер. Добавьте MCP-сервер своему ассистенту, затем спросите: "Expand ./product-square.png to 9:16 and 16:9 with Image Expander." Он вызывает spicyapi_upload_file, затем spicyapi_task_create (который останавливается для подтверждения цены), затем spicyapi_task_wait.

``json { "mcpServers": { "spicyapi": { "command": "npx", "args": ["--yes", "--package=@spicyapi/mcp", "spicyapi-mcp"], "env": { "SPICY_API_KEY": "YOUR_SPICY_API_KEY" } } } } ``

  • Skill. npx skills add spicyapi-ai/spicy-skill устанавливает Agent Skill, который учит ассистента по коду читать актуальную схему и переиспользовать ключи идемпотентности вместо догадок. Сам по себе он не выполняет задачи, поэтому используйте его вместе с CLI или MCP.

Проверьте каждый результат в три прохода

  1. Товар: то же количество предметов, силуэт, цвет, этикетка, ручка или крышка. Изменённый логотип или вторая кружка в новой области — это брак, а не стилистический выбор.
  2. Стык: проследите край столешницы, узор стены, горизонт и направление света через старую границу. Шов за товаром важен, а вот в углу, который вы обрежете, — нет.
  3. Макет: наложите рамку заголовка и зоны перекрытия интерфейса платформы. Вертикальный сторис может спрятать товар под элементами управления, поэтому сверьтесь с актуальными рекомендациями по безопасной зоне для этого размещения.

Если проблема находится за пределами вашего кропа, обрежьте её. Если она пересекает товар или текстовую зону, поменяйте исходник (более широкий оригинал, менее плотный кроп, более нейтральный фон) или вернитесь к собранному макету. Новая генерация с тем же исходником — это новый розыгрыш, а не починка, поэтому сначала что-то измените.

Стоимость набора из трёх форматов

Каждый готовый результат стоит $0.024, поэтому 16:9 и 9:16 из одного исходника — это 2 x $0.024 = $0.048, а три результата (например, 1:1, 16:9 и 9:16 из исходника 4:3) — $0.072. Партия из 20 исходников в двух соотношениях — это 40 вызовов, или $0.96; если 5 исходникам нужна ещё одна попытка с лучшим исходником, то 45 вызовов, или $1.08. Вырезание объектов, увеличение разрешения и время дизайна сюда не входят. Завершённый запрос тарифицируется независимо от того, как выглядит результат, поэтому исправляйте исходник перед повторным запуском, а не пробуйте снова наугад.

Схема: 2 вызова $0.048, 3 вызова $0.072, 40 вызовов $0.96, 45 вызовов $1.08.
Число вызовов при $0.024 за результат.

Частые вопросы

Что, если моё фото больше 1536 px? Оно вернётся с 1536 px по длинной стороне, то есть может оказаться меньше оригинала. Увеличьте его позже, если в месте размещения нужно больше пикселей.

Можно ли сделать из него первый кадр 9:16 для видео? Да, если человек и поза уже полностью попали в кадр; смотрите руководство по превращению горизонтального портрета в вертикальное AI-видео. На странице модели указаны актуальные схема и цена.

Другие языки English · 日本語 · 한국어 · Deutsch · Français · Español · Português (Brasil) · Italiano · Polski