HiAPI
Блог

Руководство по использованию

Flux-2-Klein-4b: редактирование фотографий продуктов для электронной коммерции на основе изображения

Практический рабочий процесс редактирования существующих фотографий продуктов с помощью flux-2-klein-4b/image-to-image в API hiapi — с реальными подсказками, реальными результатами и пакетным кодом.

Aug 12, 2026
Flux-2-Klein-4b: редактирование фотографий продуктов для электронной коммерции на основе изображения

Почему стоит редактировать фотографии продуктов, а не переснимать их

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

Именно для этой задачи хорошо подходит flux-2-klein-4b/image-to-image в API hiapi: он принимает существующую фотографию продукта и инструкцию по редактированию и создаёт новое изображение, в котором всё, что вы не просили менять, остаётся как было. Это быстрый и экономически выгодный уровень серии FLUX.2 [klein] — не тот выбор, когда вы генерируете продукт с нуля, но отличный вариант, когда у вас уже есть хорошая базовая фотография.

Ниже приведены две реальные правки одной и той же исходной фотографии с точными использованными подсказками, а также пакетный скрипт для запуска этого процесса по всему каталогу продуктов.

Исходная фотография

Это базовое изображение, на котором основана каждая правка ниже: матово-чёрные накладные наушники, снятые на однотонном сером студийном фоне — типичная фотография «до» для карточки товара, которой нужны дополнительные варианты.

Правка 1: поместить продукт в жизненную сцену

Использованная подсказка:

Оставьте наушники полностью неизменными (форма, матово-чёрная отделка, логотип и пропорции не меняются). Замените однотонный серый студийный фон на тёплую жизненную сцену: наушники лежат на светлом дубовом деревянном столе, рядом закрытый MacBook, небольшое зелёное растение и керамическая кофейная чашка, мягкий естественный свет из окна падает слева, малая глубина резкости, уютная домашняя офисная редакционная фотография продукта.

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

Правка 2: заменить материал, не меняя форму

Использованная подсказка:

Оставьте форму, пропорции, логотип и угол съёмки наушников полностью неизменными. Измените только материал и цвет амбушюр и подушечки оголовья с матово-чёрного на коричневую кожу с видимыми швами, а корпус/дужки оголовья оставьте матово-чёрными. Сохраните однотонный серый студийный фон и освещение, фотография продукта для каталога электронной коммерции.

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

Почему эти правки надёжны

  • Указывайте, что остаётся неизменным, а не только что меняется. Фраза «оставьте форму, логотип и пропорции неизменными» перед инструкцией по редактированию работает лучше, чем любые подробные описания нового фона или нового материала.
  • Будьте буквальны в отношении цели. «Коричневая кожа с видимыми швами» оставляет модели меньше пространства для интерпретации, чем «сделай это премиальным на вид».
  • Одна правка на подсказку. Замена фона и замена материала по отдельности работают хорошо; нагромождение нескольких несвязанных изменений в одной подсказке часто размывает якорь и сдвигает нежелательные детали.
  • Используйте одну и ту же базовую фотографию для всех вариантов. Каждое изображение в этом руководстве начинается с одной и той же исходной фотографии — именно поэтому они могут использоваться вместе в одной карточке товара или кампании.

Пакетное редактирование каталога продуктов

Обе правки выше используют одну и ту же структуру запроса: существующий URL изображения плюс подсказка для редактирования, отправленные в асинхронную конечную точку задач hiapi. Приведённый ниже фрагмент кода зацикливает этот процесс по списку кортежей (base_image_url, prompt, output_name) — это тот же шаблон, который вы бы использовали для пакетной обработки всего каталога в набор фоновых или материальных вариантов.

import os
import time
import requests

API_BASE = "https://api.hiapi.ai/v1/tasks"
TOKEN = os.environ["HIAPI_API_KEY"]
MODEL = "flux-2-klein-4b/image-to-image"


def submit_edit(base_image_url: str, prompt: str) -> str:
    resp = requests.post(
        API_BASE,
        headers={"Authorization": f"Bearer {TOKEN}"},
        json={
            "model": MODEL,
            "input": {
                "prompt": prompt,
                "image_urls": [base_image_url],
                "resolution": "1 MP",
            },
        },
        timeout=60,
    )
    resp.raise_for_status()
    return resp.json()["data"]["taskId"]


def wait_and_download(task_id: str, out_path: str, poll_s: int = 5, timeout_s: int = 300) -> None:
    deadline = time.time() + timeout_s
    while time.time() < deadline:
        r = requests.get(
            f"{API_BASE}/{task_id}",
            headers={"Authorization": f"Bearer {TOKEN}"},
            timeout=30,
        )
        task = r.json().get("data", {})
        if task.get("status") == "success":
            url = task["output"][0]["url"]
            img = requests.get(url, timeout=120)
            with open(out_path, "wb") as f:
                f.write(img.content)
            return
        if task.get("status") == "fail":
            raise RuntimeError(task.get("error"))
        time.sleep(poll_s)
    raise TimeoutError(f"task {task_id} did not finish in {timeout_s}s")


# Одна запись на каждый продукт / вариант, который вам нужен.
batch = [
    ("https://cdn.example.com/products/headphones-black.jpg",
     "Keep the product exactly as-is (shape, finish, logo, proportions). "
     "Replace the background with a warm lifestyle desk scene, soft natural "
     "light from the left.",
     "headphones-lifestyle.jpg"),
    ("https://cdn.example.com/products/headphones-black.jpg",
     "Keep the shape, proportions, logo, and camera angle exactly as they "
     "are. Change only the ear cushion and headband padding material to tan "
     "brown leather with visible stitching; background and lighting stay "
     "the same.",
     "headphones-tan-leather.jpg"),
]

for base_url, prompt, out_name in batch:
    task_id = submit_edit(base_url, prompt)
    wait_and_download(task_id, out_name)
    print(f"saved {out_name}")

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

Цены

flux-2-klein-4b/image-to-image оплачивается за изображение, и стоимость растёт с увеличением разрешения вывода. По состоянию на 2026-08 уровень 1MP, использованный в двух правках этого руководства, стоит $0.00715 за изображение; ознакомьтесь со страницей цен, чтобы узнать полный спектр уровней разрешения (от 0.25MP до 4MP) и текущие тарифы других моделей, поскольку цены могут меняться.

Часто задаваемые вопросы

Изменит ли image-to-image форму или логотип продукта? Если вы явно попросите его не делать этого, то нет. Явное указание в начале подсказки того, что должно остаться фиксированным (форма, пропорции, логотип), — именно то, что удерживает эти элементы стабильными; отсутствие явного указания — самая частая причина нежелательных сдвигов.

Какое разрешение использовать для редактирования каталога? 1MP достаточно для большинства веб-карточек и жизненных сцен и позволяет контролировать затраты; переходите на 2MP или 4MP только для изображений, которые будут сильно обрезаться или печататься, поскольку каждый уровень стоит дороже.

Могу ли я запустить этот процесс для всего каталога сразу? Да — пакетный скрипт выше и есть этот шаблон: цикл по кортежам (image, prompt, output name), отправляющий каждый элемент как отдельную задачу. Запускайте несколько запросов параллельно, а не один огромный последовательный цикл.

Чем это отличается от генерации продукта с нуля с помощью text-to-image? Text-to-image начинает с нуля, поэтому не может гарантировать, что результат будет соответствовать точной геометрии существующего продукта. Image-to-image начинается с вашей реальной фотографии, поэтому форма, логотип и пропорции, которые вы не просили изменить, сохраняются по построению — именно это и нужно каталогу продуктов.

Попробуйте сами

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

Похожие статьи

Все статьи →

Начните работать с постоянными артефактами ИИ

Получите API-ключ и вызывайте модели изображений, видео и аудио через один API на основе tasks.

Читать документацию API