Image Expander в SpicyAPI (spicyapi.ai) — быстрый способ получить из квадратного фото товара горизонтальный баннер и вертикальный сторис: вы отправляете одно изображение и одно соотношение сторон, а он возвращает фото, помещённое в более крупный кадр, с новой сценой по краям. Стоимость — $0.024 за изображение при любом соотношении, промпт и маска не нужны, длинная сторона результата всегда 1536 px. Нюанс в том, что он частично перерисовывает и само фото, поэтому подходит для фонов, а не для точных деталей товара. Для пиксельно точной упаковки нужно вернуть оригинал поверх. Если вам важно контролировать, что именно дорисовывается, сгенерируйте сцену в новом соотношении моделью редактирования изображений на основе промпта; руководство по переводу фото товара в рекламные макеты делает это для тех же трёх форматов.
Кадрировать, собрать макет или расширить
- Кадрируйте, если на нужных сторонах фото уже есть запас сцены. Это бесплатно и сохраняет каждый пиксель.
- Соберите холст (однотонная заливка или панель рядом с фото), если заголовку нужна гарантированно чистая область. Сгенерированная сцена этого не обещает.
- Расширяйте, если в месте назначения нужно больше изображения, чем вы сняли, а однотонная заливка выглядела бы неверно: небо над вертикальным кадром, столешница и стена рядом с квадратом. Умеренные изменения формы смешиваются лучше всего; чем дальше новая форма от исходной, тем больше сцены выдумывается.
Размеры результата для семи соотношений
Длинная сторона всегда 1536 px, короткая следует из соотношения. Задача — spicyapi/image-expander-v1/edit, и она поддерживает эти значения:
| Соотношение | Результат | Типичное применение |
|---|---|---|
| 1:1 | 1536 × 1536 | Пост в ленте, плитка маркетплейса |
| 4:3 | 1536 × 1152 | Слайд, презентация |
| 3:4 | 1152 × 1536 | Вертикальный пост в ленте |
| 3:2 | 1536 × 1024 | Горизонтальный кадр в печатном стиле, баннер |
| 2:3 | 1024 × 1536 | Вертикальный кадр в печатном стиле, pin |
| 16:9 | 1536 × 864 | Шапка сайта, обложка видео |
| 9:16 | 864 × 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% кадра выдумывается.
Большие скачки тоже работают. Один опубликованный пример превращает портрет на террасе 1280 × 720 в сторис-кадр 864 × 1536 во всю длину, а остаток платья, плитку пола и небо дорисовывает:


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

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

Выберите исходник, который хорошо расширяется
- Оставьте запас вокруг товара и держите его подальше от границы, от которой он будет расти. Полный товар с пустым местом рядом расширяется надёжнее, чем плотный кроп.
- Предпочитайте простые окружения: бесшовный фон, оштукатуренная стена, небо, столешница с одной чёткой линией горизонта. Повторяющиеся узоры вроде плитки или полос могут сбить фазу на стыке.
- Берите ближайшее соотношение. Если маркетплейсу нужно 5:4, берите от 1:1 или от 4:3, а не от исходника 9:16.
Сначала попробуйте в Playground
- Откройте страницу задачи Image Expander и оставайтесь на вкладке Playground в представлении Form. Войдите в аккаунт с балансом, чтобы запустить выполнение.
- В поле Input image перетащите фото или используйте Asset URL для прямой ссылки (JPG, PNG или WebP, до 10 MB).
- Выберите соотношение в поле Aspect ratio (не Auto — API его не принимает) под нужное место размещения, например 16:9 для шапки или 9:16 для сторис. Output format по умолчанию PNG; выберите JPEG или WebP для меньших файлов.
- Проверьте оценку цены и запустите. Сначала испробуйте нужные соотношения на самом сложном исходнике: плохой стык здесь будет плохим и через API.
Тело запроса под формой — это тот же JSON, который принимает API, поэтому рабочую здесь настройку можно перенести в код напрямую.
Затем вызовите его из кода
Установите Python SDK (pip install spicyapi), задайте SPICY_API_KEY в окружении и выполните по одному вызову на каждый исходник и соотношение:
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.
Проверьте каждый результат в три прохода
- Товар: то же количество предметов, силуэт, цвет, этикетка, ручка или крышка. Изменённый логотип или вторая кружка в новой области — это брак, а не стилистический выбор.
- Стык: проследите край столешницы, узор стены, горизонт и направление света через старую границу. Шов за товаром важен, а вот в углу, который вы обрежете, — нет.
- Макет: наложите рамку заголовка и зоны перекрытия интерфейса платформы. Вертикальный сторис может спрятать товар под элементами управления, поэтому сверьтесь с актуальными рекомендациями по безопасной зоне для этого размещения.
Если проблема находится за пределами вашего кропа, обрежьте её. Если она пересекает товар или текстовую зону, поменяйте исходник (более широкий оригинал, менее плотный кроп, более нейтральный фон) или вернитесь к собранному макету. Новая генерация с тем же исходником — это новый розыгрыш, а не починка, поэтому сначала что-то измените.
Стоимость набора из трёх форматов
Каждый готовый результат стоит $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. Вырезание объектов, увеличение разрешения и время дизайна сюда не входят. Завершённый запрос тарифицируется независимо от того, как выглядит результат, поэтому исправляйте исходник перед повторным запуском, а не пробуйте снова наугад.
Частые вопросы
Что, если моё фото больше 1536 px? Оно вернётся с 1536 px по длинной стороне, то есть может оказаться меньше оригинала. Увеличьте его позже, если в месте размещения нужно больше пикселей.
Можно ли сделать из него первый кадр 9:16 для видео? Да, если человек и поза уже полностью попали в кадр; смотрите руководство по превращению горизонтального портрета в вертикальное AI-видео. На странице модели указаны актуальные схема и цена.






